- ベストアンサー
Excel VBAで参照先の変換
- Excel VBAで参照先の変換が思うように行かない問題について
- Sheet3のコピーが正しく変換されずエラー表示となる原因と対処方法
- プログラム修正による「wsDst.Range(D:D).Replace [*], 」の実行順序の制御方法
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 理解が至っているか判りませんが、 常に2つのシートを、丸々シートごと、 自ブックにコピーする作業を繰り返す、ということだとして。 コピー先で外部ブックへの参照名を置換で消したとしても、 シート名がソースブックとデストブックで 必ず一致するとは限りませんよね。 "Sheet2" が既存であれば、"Sheet2 (2)" とか。 必ずしも、この点が原因でうまく行っていないという事でも 無いかも知れませんが、不確定要素を無理に抱えるような 処理方法という印象です。 シートふたつを纏めてコピーすれば、 シート間の参照関係もそのまま(自己完結するように)コピーできます。 なので、コピー後に参照先を変換する必要はないのでは?と。 ふたつを纏めてコピー。例えば、以下のように。 ' ' // ' Dim colWsSrc As Sheets strDirectory = ThisWorkbook.Path strSrcBook = "Book1.xlsx" Workbooks.Open Filename:=strDirectory & "\" & strSrcBook, ReadOnly:=True Set colWsSrc = Workbooks(strSrcBook).Worksheets(Array("Sheet2", "Sheet3")) Set wsDst = ThisWorkbook.Worksheets("Sheet1") colWsSrc.Copy After:=ThisWorkbook.Worksheets("Sheet1") Workbooks(strSrcBook).Close SaveChanges:=False ' ' //