私は他のブックで頻繁に仕事をしなければならないと、私は次のようにします。私はそのワークブックには何もアクセスしたいとき
Dim reportBookPath As String
Dim reportwb As Workbook
reportBookPath = "C:\Users\......\filename.xlsx"
Set reportwb = Workbooks.Open(Filename:=reportBookPath)
reportwb.Application.Visible = False
はその後、それはやってするだけです:
valueDesired = reportwb.Worksheets("Desired Sheet").Cells(row,column).Value
これを使用してダイナミックファイル名のワークブックを開くには、ワークブック名にある種のパターンを設定する必要があります。それがあれば、正規表現を使って適切なワークブックを開くことができます。あなたが希望これを行うには:
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim shiftRegExp As RegExp
Dim strPattern As String
Dim pathToFile As String
次の行を:
strPattern = "[S|s]hift(?)1(?)\.xlsx$"
は、このコードのすべての本当の強力な部分があります。この特定の正規表現は、次のいずれかで終了するファイル名に適用されます。
shift1.xlsx; 1.xlsxをシフトする。 shift1。 xlsx;シフト1 .xlsx; Shift1.xlsx;シフト1.xlsx。 Shift1 .xlsx; Shift 1 .xlsx
this linkを使用して、独自の正規表現をテストすることができます。
Set shiftRegExp = CreateObject("vbscript.regexp")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\....\workbook directory")
With shiftRegExp
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
あなたは、あなたの正規表現にマッチするファイルを見つけるまで、あなたの選択したディレクトリ内のすべてのファイルを反復することにより、正規表現を利用します。明らかに、あなたの正規表現に一致する複数のファイルがある場合、問題が発生します。
For Each objFile In objFolder.Files
If shiftRegExp.test(objFile.Path) Then
pathToFile = objFile.Path
Exit For
End If
Next objFile
ここで少し明確にする必要があります。ファイルのデータフィールドの場所はわかりますか?もしそうなら、あなたのボタンに 'Workbooks.Open'を実行させて、必要なものを取り出し、閉じ、calcなどを行います。ユーザがファイルを指定するようにしたい場合は、 'Application.FileDialog(msoFileDialogFilePicker)'コマンドを見て問題のファイルを選択させますか?あなたが努力を投稿し、あなたが最初にそれを解決しようとしていることを示すなら、一般的にあなたはここで助けられる可能性が高いです。 – Dave
あなたは実際に「ここでの特定の問題」を述べていません。 –
申し訳ありませんが、私は実際に私のためにこれを行う人を探していなかった!正しい方向にプッシュしたいだけでした。FileDialogコマンドを見てみましょう。これは私が探しているようです。ありがとう – ct4242