
単刀直入にやりたいことを述べます。
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を探す
今、見られている記事はコレ!
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
-
話題の「風呂キャンセル界隈」、お風呂に「入らない」のではなく「入れない」?
皆さんは、「風呂キャンセル界隈(かいわい)」という言葉を聞いたことはあるだろうか。「お風呂に入らない(入れない)人」のことで、最近ネット上などで話題になっているようだ。「教えて!goo」にも、「風呂に入...
-
マッチングアプリで出会ったカップルは成婚率が高い!?結婚カウンセラーに聞いてみた
パートナーとの出会いの場として、もはや主流となったネット婚活やマッチングアプリ。中でも手軽に登録できるマッチングアプリは、10代から50代と幅広い年代が利用している。一方で、“相手の目的が投資関係の詐欺や...
-
メダロット:第250話「Vol.250※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルの下部のシートタブの...
-
ワークシートの行が途中から表...
-
行の挿入ができなくなった
-
シート全体を他のブックのシー...
-
EXCELのマクロについて
-
シート保護したExcelへの画像貼...
-
EXCELでコピーしたグラフのデー...
-
シート保護してても並び替えを...
-
スプレッドシートが真っ白にな...
-
エクセルで数式は残したまま他...
-
Excelで保護のかかったシートの...
-
エクセルでセルの書式設定がで...
-
【OpenOffice】 改ページプレビ...
-
色付きセルの合計を自動更新したい
-
エクセルで打ち込んだ数字を自...
-
wordからexcelへ一部のデータを...
-
worksheetクラスのcopyメソッド...
-
エクセルの「入力後に移動する...
-
【Excel マクロ】貼り付け先の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルの下部のシートタブの...
-
ワークシートの行が途中から表...
-
【マクロ】【画像あり】4つの...
-
シート全体を他のブックのシー...
-
EXCELでコピーしたグラフのデー...
-
エクセルでセルの書式設定がで...
-
エクセルで数式は残したまま他...
-
シート保護したExcelへの画像貼...
-
行の挿入ができなくなった
-
VBA アクティブでないシートの...
-
シート保護してても並び替えを...
-
Excelで保護のかかったシートの...
-
ロックしたセルのコピー&貼り付け
-
スプレッドシートが真っ白にな...
-
excelで勝手にテキストボックス...
-
【OpenOffice】 改ページプレビ...
-
Excelで大量の2000個のリストを...
-
Excelでハイパーリンク先の表示...
-
フィルタされたものを切り取り...
おすすめ情報