2017-03-03 9 views
1

私は、VBAを使用してExcelブックを開くしようとしています:VBAオープンブックはファイル名の最初の部分に基づいていますか?

'Open Planner 
On Error Resume Next 
Set WB = Workbooks("(FILE NAME).xlsx") 
On Error GoTo 0 
If WB Is Nothing Then 'open workbook if not open 
    Set WB = Workbooks.Open("G:\BUYING\Food Specials\6. Depot Memos\" & ThisWorkbook.Worksheets(1).Range("T8").value & "\(File Name).xlsx", Password:="samples", WriteResPassword:="samples", UpdateLinks:=False) 
End If 

私が持っている問題は、私のファイルがそうのような時間までの時間から名前を変更している:私はベースのファイルを開くことができますどのように

Depot Memo 12 - 13 
Depot Memo 13 - 14 
Depot Memo 15 - 16 

ファイル名の「Depot Memo」の最初の部分に? 私はVBAの新しいブランドですので、本当に助けていただければ幸いです。事前に

おかげ

+0

あなたはその時点で開かれるファイル名を知っていますか?マクロが実行されますか?いいえの場合、それを検索する基準は何ですか? – user3598756

答えて

1

hereからの回答に基づいて、この例を試してみてください(@Alex K.へのアウトを叫ぶ):

ただ、このようなあなたのコードの一部を置き換え:

'Open Planner 
'This is your routine here 
On Error Resume Next 
Set WB = Workbooks("(FILE NAME).xlsx") 
On Error GoTo 0 
If WB Is Nothing Then 'open workbook if not open 
    Set WB = FindDepotMemo 
End If 
'and there you need another check if WB is nothing 

そして、この機能をプロジェクトに追加してください:

Function FindDepotMemo() As Workbook 
    Dim Path As String 
    Dim FindFirstFile As String 

    Path = "G:\BUYING\Food Specials\6. Depot Memos\" & ThisWorkbook.Worksheets(1).Range("T8").Value & "\" 

    FindFirstFile = Dir$(Path & "Depot Memo*.xlsm") 

    If (FindFirstFile <> vbNullString) Then 
     Set FindDepotMemo = Workbooks.Open(Filename:=Path & FindFirstFile, Password:="samples", WriteResPassword:="samples", UpdateLinks:=False) 
    End If 
End Function 
+0

このコードでは、すでに開かれていても開かれていない場合にメモを保存するようにブックを設定していますか?ワークブックがすでに開いている場合は、このコードでエラーが発生することがわかります。ワークブックがこのコードで私のコードのセクションに開いていれば、どうすればチェックできますか? – user7415328

+0

@ user7415328、私はあなたのルーチンに合うように答えを更新し、小切手やエラーハンドリングを自由に追加してください! – CommonSense

+0

提案に感謝しますが、私はこれがうまくいくとは思わない。 WBのオブジェクト定義されていないエラーが発生します。 Set WB = Workbooks( "(FILE NAME).xlsx")を削除しました。ファイル名と呼ばれるファイルがないため、WB = FinDepotMemoがブックの名前になるはずです。しかし、私はまだエラー – user7415328

関連する問題