Excel VBAで参照先の変換
ExcelのVBAでBook1.xlsxのSheet2とSheet2を参照しているSheet3をBook2.xlsxにコピーするプログラムを作成しているのですが、Sheet3のコピーが思うように行きません。
具体的にはSheet3が参照しているSheet2をBook1.xlsxからBook2.xlsxに変換する所です。
下記のようなプログラムを作成しました。
strDirectory = ThisWorkbook.Path
strSrcBook = "Book1.xlsx"
Workbooks.Open Filename:=strDirectory & "\" & strSrcBook, ReadOnly:=True
Set wsSrc = Workbooks(strSrcBook).Worksheets("Sheet2")
Set wsDst = ThisWorkbook.Worksheets("Sheet1")
wsSrc.Copy After:=wsDst
Set wsSrc = Workbooks(strSrcBook).Worksheets("Sheet3")
Set wsDst = ThisWorkbook.Worksheets("Sheet2")
wsSrc.Copy After:=wsDst
wsDst.Range("D:D").Replace "[*]", ""
Workbooks(strSrcBook).Close SaveChanges:=False
Sheet3のD列がSheet2を参照しているのですが、上記を実行すると開くファイルの選択を要求され、キャンセルし続けると実行が完了しますが、コピーされたSheet3の参照先が正しく変換されずエラー表示となってしまいます。
「wsDst.Range("D:D").Replace "[*]", ""」が完了する前に「Workbooks(strSrcBook).Close SaveChanges:=False」が実行されてしまうのが原因と思われるのですが、実際のプログラムでは開くBookは1つではなくSheet1に記載したリストを順番に開いてコピーするという事を行っている為、作業が完了したBookは閉じるようにしたいです。
どの様に修正すれば「wsDst.Range("D:D").Replace "[*]", ""」が完了するのを待って、「Workbooks(strSrcBook).Close SaveChanges:=False」が実行されるように出来るのでしょうか?
お礼
まさにその通りでした。 ありがとうございました。