• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで参照先の変換)

Excel VBAで参照先の変換

このQ&Aのポイント
  • Excel VBAで参照先の変換が思うように行かない問題について
  • Sheet3のコピーが正しく変換されずエラー表示となる原因と対処方法
  • プログラム修正による「wsDst.Range(D:D).Replace [*], 」の実行順序の制御方法

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 ' ' //