- ベストアンサー
エクセルマクロでコピー&ペーストを実行する方法
- エクセルマクロを使用して、コピー元と貼り付け先を指定してコピー&ペーストを実行する方法を詳しく説明します。
- 具体的には、BOOK1.xlsの指定したセルの値とBOOK2.xlsの指定したセル範囲をコピーし、BOOK3.xlsの指定したセルへペーストします。
- エクセルのバージョンが2000または2003の場合でも、マクロを使用することで実現可能です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
思われていることと違っていたらすみませんが、参考までに下記のコードをBOOK1.xlsのマクロに貼り付けて実行してみてください。 コピー先のBOOKを壊してはいけないので必ず、コピーしたBOOK等でテストしてみてください。 3つのBOOKがCドライブ直下にあり、BOOK1.xlsの参照するシートのシート名が○○Sheetであることが前提です。 メニューバーの「ツール」→「マクロ」→「マクロ」をクリック ↓ マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:コピーペースト) ↓ 名前を入力しましたら、「作成」をクリック ↓ Microsoft Visual Basicの画面が開きますのでSub コピーペースト()の下に次のコードをコピーして貼り付けてください。 Dim INファイル名 As String Dim INシート名 As String Dim IN範囲 As String Dim OUTファイル名 As String Dim OUTシート名 As String Dim OUT範囲 As String Dim 文字列 As String Dim 検索文字 As String Dim 文字カウント As Integer Dim 文字数 As Integer '○○SheetのA1にあるファイル名とシート名を取得する 文字列 = Sheets("○○Sheet").Range("A1") 検索文字 = "「" 文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1) 文字カウント = 文字カウント - 1 'ファイル名の文字数を取得 INファイル名 = Left(文字列, 文字カウント) 'INファイル名の取得 文字数 = Len(文字列) 文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得 文字列 = Right(文字列, 文字カウント) 文字カウント = Len(文字列) - 1 INシート名 = Left(文字列, 文字カウント) 'INシート名の取得 IN範囲 = Sheets("○○Sheet").Range("A2") 'コピーの範囲 '○○SheetのA3にあるファイル名とシート名を取得する 文字列 = Sheets("○○Sheet").Range("A3") 検索文字 = "「" 文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1) 文字カウント = 文字カウント - 1 'ファイル名の文字数を取得 OUTファイル名 = Left(文字列, 文字カウント) 'OUTファイル名の取得 文字数 = Len(文字列) 文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得 文字列 = Right(文字列, 文字カウント) 文字カウント = Len(文字列) - 1 OUTシート名 = Left(文字列, 文字カウント) 'OUTシート名の取得 OUT範囲 = Sheets("○○Sheet").Range("A4") '貼り付ける位置 'A1のセルの値とA2セルの値を参照しコピー Workbooks.Open Filename:="C:\" & INファイル名 'INファイルのOPEN Workbooks(INファイル名).Worksheets(INシート名).Activate Worksheets(INシート名).Range(IN範囲).Select Selection.Copy 'コピー Application.DisplayAlerts = False ActiveWorkbook.Close savechanges:=False 'INファイルのCLOSE Application.DisplayAlerts = True 'A3のセルの値と、A4セルの値を参照しペースト Workbooks.Open Filename:="C:\" & OUTファイル名 'OUTファイルのOPEN Workbooks(OUTファイル名).Worksheets(OUTシート名).Activate Worksheets(OUTシート名).Range(OUT範囲).Select Application.DisplayAlerts = False ActiveSheet.Paste '貼り付け Application.DisplayAlerts = True Application.CutCopyMode = False Application.DisplayAlerts = False ActiveWorkbook.Close savechanges:=True 'OUTファイルのCLOSE Application.DisplayAlerts = True MsgBox "コピー&ペーストが終了しました。 " '****コピー貼り付けはここまで **** Microsoft Visual Basicの画面を×で閉じます ↓ Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック ↓ 先ほど名前を付けたマクロを選択して「実行」をクリック BOOK1.xlsの参照するシート名が○○Sheetでない場合は上記のコードの○○Sheetのところを修正してください。 また、各BOOK*.xlsがCドライブ直下に無い場合は、上記コードの"C:\"のところを修正してください。
お礼
こんな長いコードを書いてもらってありがとうございます。 シート名をカギカッコで括って表記してしまったので混乱をまねいたようですね、 最初は自分がカギカッコの意味が判らなかったのですが、 やってみたら、BOOK2.xls「△△Sheet」と そのまま書くだけでOKだったので出力結果は完璧です。 カギカッコ表記対応になっているのがすごいです。 本当に助かりました。 ありがとうございます。