質問: strCdir End With
回答: 以下の2ヶ所を変更してください。 (1)冒頭の変数宣言部 Dim strCdir As String Dim strFname As String ↓ Dim strCdir As String Dim strFname As String '開いたブック格納用の変数 Dim baseBook As Workbook 'シート格納用の変数 Dim mySt As Worksheet (2)中盤の開くダイアログ表示後 MsgBox "選択したファイル名は" & strFname & "です。" ↓ 'ファイルを開きworkbook型変数へ代入 Set baseBook = Workbooks.Open(Filename:=strFname, ReadOnly:=True) With ThisWorkbook 'マクロブックに対して処理 '開いたブックの全シートを変数に1つずつ代入しながら繰り返し For Each mySt In baseBook.Worksheets ' '変数に代入されたシートをマクロブックの最終シートの次にコピー mySt.Copy Before:=.Worksheets(.Worksheets.Count) Next mySt End With 'ブック変数を閉じる baseBook.Close ネットでは数多くの参考資料やサンプルプログラムがありますが、 これらは臨機応変に対応できるように極力最小構成のコードで記載されていることが多く、自分の意図したこととすべてマッチするようなコードに出会える可能性はあまりありません。 要は、sampleであり解説であり目的のコードを応用する力を身に着けることが一番の近道かと思います。 「Excel VBA ファイル 開き方」 「Excel VBA ファイル 閉じ方」 「Excel VBA シート コピー」など 目的に応じたサンプルコードを見つけて組み合わせ、 つなぎ合わせること(つなぎ合わせに多少の知識が必要ですが入門レベルです) で今回のようなコードは出来上がるかと思います。 コードの意味を調べてみてください。 今回のコードには軽くコメントを記載していますので、 それも参考にしてみてください。