
単刀直入にやりたいことを述べます。
Cドライブと仮定します。3つのBOOKがあります。
それぞれ
-----
BOOK1.xls「○○Sheet」・・・(実行するファイル)
A
1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です)
2 A2:E2・・・(コピーするセル範囲の指定)
3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です)
4 A5・・・(貼り付け先のセルの指定)
-----
BOOK2.xls「△△Sheet」・・・(コピー元ファイル)
ABCDE
1 あいうえお
2 かきくけこ
3 ・・・・・
-----
BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)
ABCDE
1 ・・・・・
2 かきくけこ・・・(貼り付け)
3 ・・・・・
-----
>やりたいこと
BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、
その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、
BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、
その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。
別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、
以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。
よろしくお願いします。(ちなみにエクセル2000又は2003です)
No.2ベストアンサー
- 回答日時:
思われていることと違っていたらすみませんが、参考までに下記のコードを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だったので出力結果は完璧です。
カギカッコ表記対応になっているのがすごいです。
本当に助かりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
エクセル最終行の下に貼り付け
Excel(エクセル)
-
EXCEL VBA データを抽出して別シートへ貼り付ける方法
Excel(エクセル)
-
4
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
5
マクロ 貼り付け先のセルを変更するには?
その他(Microsoft Office)
-
6
任意のセルに貼り付けをするマクロのアドバイスを
Excel(エクセル)
-
7
エクセルマクロでサイズを指定して画像を一括貼り付けしたいです。
PowerPoint(パワーポイント)
-
8
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
9
VBA別シートの最終行の下行へ貼り付けされるようにしたいです。
その他(Microsoft Office)
-
10
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
エクセル:シート名を手入力でなく、セル「A1」の文字を出したい。
Excel(エクセル)
-
13
VBAで文字列を数値に変換したい
Excel(エクセル)
-
14
マクロで別ファイルのシートコピーして、元ファイルに貼り付けを行なうには
Access(アクセス)
-
15
エクセルのマクロで結合セルに値を貼り付けたい
Excel(エクセル)
-
16
ExcelマクロでグラフをPowerPointにリンク貼り付けする方法
PowerPoint(パワーポイント)
-
17
ExcelのVBAで最終行の下にコピーする方法
その他(Microsoft Office)
-
18
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
-
19
'Range'メソッドは失敗しました
Excel(エクセル)
-
20
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
関連するQ&A
- 1 エクセルでマクロを使って別のシートのセルをコピーしたいのですがコピー先はマクロを実行した際のセルに指
- 2 エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです
- 3 エクセル2000のマクロにおける、複数シート間のコピー&ペーストについて
- 4 エクセル マクロボタンを使用し指定した表をコピーペーストする方法
- 5 マクロを使って不特定のファイルからコピー&ペーストしたい(エクセル)
- 6 エクセルで検索&コピー&貼り付け
- 7 マクロのコピー&ペーストの繰り返し
- 8 マクロでの可視セルのコピー&ペーストについて
- 9 カット&ペーストのマクロ(エクセル)
- 10 コピー&ペーストを貼り付けを繰り返すとエラー
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ワークシートの行が途中から表...
-
5
シート全体を他のブックのシー...
-
6
エクセルで打ち込んだ数字を自...
-
7
エクセルで多数のシートをまと...
-
8
worksheetクラスのcopyメソッド...
-
9
EXCELでコピーしたグラフのデー...
-
10
EXCELで入力したものが違...
-
11
EXCELで複数シート作成後、全シ...
-
12
コピー&ペーストすると、VLOOK...
-
13
VBA アクティブでないシートの...
-
14
【エクセル】表から条件に合っ...
-
15
ロックしたセルのコピー&貼り付け
-
16
excelで勝手にテキストボックス...
-
17
Excelで保護のかかったシートの...
-
18
Excelのシート間で数式のコピー...
-
19
Excelで大量の2000個のリストを...
-
20
Excelのシートを1枚にまとめる...
おすすめ情報