• ベストアンサー

エクセル(VBA)のブック間でのコピーペーストについて

こんにちは。VBA入門レベルのものですが、質問させてください。 ブックAとブックBを開いた状態にし、 ・ブックA⇒VBAを組む&データ貼付け先 ・ブックB⇒データコピー元 ブックBの特定セル(例:D10)からブックAの特定セル(例:E12)にコピー⇒貼付 する方法を探しています。 なお、ブックBは、ブック名とシート名が都度変わるので、「ブックAではない方の開いているエクセルファイルからデータをコピーし、ブックAに貼付ける」の構文にしたいです。 また、コピペの他に数式(イコール)で飛ぶ方式でもかまいません。 この内容でのVBAの記述方法が分かる方、どなたか教えて頂けますでしょうか。 すみませんがよろしくお願いいたします。 ※エクセル2003です。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

ブックBは開いてあり、目的のシートを選択した状態になっているとの前提でいいですね。 以下にサンプルを示しますので参考にしてください。 内容はソース中のコメントを見てください。 Sub Sample()  Dim wbk As Workbook    '自ブック以外なければ終了  If Workbooks.Count = 1 Then   MsgBox ("ブックBなし")   End  End If    '自ブック(ブックA)以外のブックを探す。  sFindbook = ""  For Each wbk In Workbooks '開いているBook分ループを回す   If wbk.Name <> ThisWorkbook.Name Then '自ブック(ブックA)は除外    sFindbook = wbk.Name '自ブック以外のブック名取得    Exit For  'ブックが1つ見つかったらループを抜ける   End If  Next wbk  Windows(sFindbook).Activate '見つけたブックをアクティブに  '発見ブックのアクティブシートの特定セル(D10)の値を自ブックの1シート目の特定セル(E12)にコピー  ThisWorkbook.Sheets(1).Range("E12") = ActiveWindow.ActiveSheet.Range("D10")   End Sub

raymay0905
質問者

お礼

うまく実行できました! 構文の意味まで丁寧に記述していただき、分かりやすかったです。 ありがとうございました。

その他の回答 (3)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.4

VBAのコードのあるbookは thisworkbook になります 。 ブックBを開くのもマクロの中でするには 下記のコードで通常の「ファイルを開く」の窓が開いてユーザーが選択できます fname = "" With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = FLDname .AllowMultiSelect = False If .Show = True Then fname = .SelectedItems(1) End If End With *FLDnameに選ぶファイルの初期フォルダ名を入れます Fnameに選択されたファイル名がフルパスで入ります。 のでFnameを使ってOpenすればその時点でブックBはactiveworkbookになります。 workbooks.open(Fname)

raymay0905
質問者

お礼

ブックを開く操作まで教えていただき、ありがとうございました。 応用編として今後使わせていただきます。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

コードの書き方はいくつもありますが、 VBA入門レベルということなのでオーソドックスなのをひとつ。。 '--------------------------------------------------- Sub Test()  Dim N As Integer  'コピー元ブックのINDEX  N = 1  If Workbooks(1).Name = "ブックA.xls" Then    N = 2  End If  Workbooks("ブックA.xls").Sheets("Sheet1").Range("E12").Value = _  Workbooks(N).Sheets("Sheet1").Range("D10").Value End Sub '--------------------------------------------------- 見ればわかると思いますが、 ブックAでないのがコピー元のブックと判断してます。 また、ブックAはThisWorkbookでも表わすことができます。 以上です。

raymay0905
質問者

お礼

実行できました! ありがとうございました。 ちなみにブックAの名前も変わる場合は、 どのように変更すればよいですか?  Workbooks("ブックA.xls") は Thisworkbook でうまくいきましたが、  N = 1  If Workbooks(1).Name = "ブックA.xls" Then    N = 2 の方がわかりません。 申し訳ありませんが、お時間あるときにでも教えていただけますでしょうか。

回答No.1

ブックBを開くのもブックAにマクロを組んでブックBの名前を変数に格納しておく必要があるのではないかと思います。 間違ってたらごめんなさい。

raymay0905
質問者

お礼

ご回答ありがとうございました。 今回のケースはAもBも既に開いていることが前提ですので、開く操作は無くとも大丈夫です。 お忙しい中申し訳ございませんでした。

関連するQ&A

  • VBA コピー&ペースト

    次の作業をVBAでマクロを組みたいのですが、どのような構文にすればよいでしょうか。VBA初心者のため、お知恵を拝借させてください。 [目的] 1.ブックA(コピー先)に設定したハイパーリンク先のブックB(コピー元)へジャンプ 2.ブックBへジャンプ後、特定のセルの値をコピー 3.コピーした値をブックAの特定セルへペースト 4. 1.~3.の作業をリピート 対象は、上の作業が未完(ブックAのペースト先のセルがブランク)のもの [詳細] ・ブックB(リンク先)の保存先はサーバー ・リンク先はブックBの特定のシート ・ブックAで設定したハイパーリンクのセルの値がリンク先のシート名 ・ブックBは複数、リンク先のシートも複数(ハイパーリンクごとにリンク先が異なる) ・ブックBにはマクロが設定、開くたびにマクロ有効無効のメッセージ(Excel2003のため) ・コピペする項目は3つ ・ブックA,Bともに開いた状態で、2.~4.のリピートというマクロでも構いません。 以上ですが、他に情報が必要でしたらお申しつけください。 よろしくお願いいたします。

  • エクセルのVBAで、異なるブック間でのコピー&ペースト

    こんばんは。 エクセルのVBAで、異なるブック間でのコピー&ペーストに関しての質問です。 現在アクティブになっているシートのB4セルをコピーして、 現在開いているシートのブックとは異なる特定の ブック(”Book1")の特定のシート(”Sheet1”)のC5セルに貼り付けたい場合、 ●●●の部分に何と表現すればよいか教えてください。 Range("B4").Copy Destination:=●●● よろしくお願いいたします。

  • エクセルVBAでブック間のコピーをしたい。

    エクセルVBAでブック間のコピーをしたい。 エクセルのVBA初心者です。 複数のブックが開いている時(ブックA,B,C...)に、今選択しているブックAのあるセルを、直前に選んでいたブックBやC(そのつど変わります)にコピーする方法は有りますでしょうか? どなたか教えて下さい。

  • エクセル)VBAで他のブックのセル参照

    はじめまして。 エクセルのVBAについて教えてください。 VBAで、 book1のsheet1のセルA1にあるデータを開いていない(アクティブでない)別のbook2のsheet2のセルB1にコピーしたいのですがこんなことってできるのでしょうか? ・・やはり開いていないとダメなんでしょうか? あと、これって"ブック参照"っていうことなんでしょうか?自分がやりたいことが何なのか判らないので上手く調べる事が出来ず難儀しています。 よろしくお願いします。

  • Excel VBAの違うBOOKへのコピーについて

    お世話様です excel vbaのコピーについての質問です C:\Documents and Settings\tanaka\デスクトップ\a というbookの中にあるsheet1のa1のデータ(以後a-a1と表記)を C:\Documents and Settings\tanaka\デスクトップ\b というbookの中にあるsheet2のc1にコピーしたい、と言った場合、 (以後b-c1と表記) それぞれのbookをactiveにしないとだめでしょうか (つまり、違うbookのファイル間でのコピーの際の質問なのですが) 私にはその方法しかわからず、この後 a-a11をb-d3へ、a-e11をb-s18へというアットランダムコピーが続くのですが、非常にコードも長く、時間がかかる処理になってしまいます。 どうか教えていただけると助かります 宜しくお願いします

  • Excelのコピー&ペーストについて

    関数や計算式等をコピペしたいのではなく、関数や計算式等でセルに表示された文字自体をコピペしたいのですが方法はありますか? <例> Sheet1のA1に「=B1」と入力して、B1が2だったためセルには「2」と表示されます。 そのセルをコピーしてSheet2のA1にペーストすると「=B1」となります。 そうじゃなくて、セルに表示された「2」自体をコピペしたいんです。 皆様の知識をお貸しください。

  • Excel VBAにてデータのある列の指定とブック間コピーについて

    初めまして。Excel VBA初心者です。よろしくお願いします。 以下の表の状態で、たとえば、B列の2行目からデータが使用されている行(以下の例では40行目ですが、ブックの内容により行数が変化します)まで、別のブックにコピーする方法があれば教えて頂きたいです。 すみませんが、よろしくお願いいたします。 A B C D E ------------------------------- 1 あ い う え お 2 い う え お か     ・     ・ ・ 40 a b c d e

  • 複数のブックから特定データ群を新ブックにまとめたい

    こんにちは。 EXCEL2007について、ご教示ください。 EXCEL2007で、複数ブック内の特定シート上にある特定のデータ(複数) を特定ブックにまとめたいのですが、うまくできずに悩んでいます。 <やりたいこと>  ・参照元は特定フォルダ内にある全ファイルが対象(100程度)  ・ブック内の特定シートが対象(シート名は  ・コピー   (1) 元シートのA4~F4セル(セル結合されています)のデータを、     先シートのB2セルへコピー   (2) 元シートのG4~L4(セル結合)のデータを、先シートのC2セル     へコピー   (3) 元シートのG6~R6セルのデータを、先シートのE2セルへコピー  ・コピー2   次ブックを読み込み、1行下(B3、C3、E3)にコピーする。  ・コピー3   以降1行下にコピーし、ファイルが無くなるまで繰り返す。 以上ですが、マクロでできるように教えていただけないでしょうか。 よろしくお願いいたします。

  • Excel 同ブックの他シートを参照するセルを、他ブックのセルにコピー

    こんにちは。Excelの使い方について質問させていただきます。 よろしくお願いします。 Excel2003を使っています。 シート数、シート名がまったく同じブックが2つあります。 AブックのAシートのA1セルを参照しているセルである AブックのBシートのA1セルをコピーします。 BブックのBシートのA1セルにペーストします。 BブックのAシートのA1セルを参照して欲しいのですが、 別ブックであるAブックのAシートのA1セルを参照するように 自動的に変換されてしまいます。 シンプルにそのままコピーすることは不可能でしょうか。 セルのコピーでは無く、中の文字列を選択してコピーしても、 何が起こっているのかよくわかりませんが上手くいきません。 Excel初心者です。マクロはまったく使えません。 親切な方、どうぞよろしくお願いします。

  • エクセルVBAでピボットテーブルを新規ブックに

    既存のエクセル(A2~F3600)データをピボットテーブルで新規ブックに張り付け?発生?させるVBA構文をご教示ください。初心者です宜しくお願いします。

専門家に質問してみよう