• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA コピー&ペースト)

VBAコピー&ペーストの方法とは?

このQ&Aのポイント
  • VBAを使用してブックAからブックBにジャンプし、特定のセルの値をコピーしてブックAにペーストする方法について教えてください。
  • ブックBの保存先はサーバーで、ブックBの特定のシートにリンク先があります。リンク先のセルの値がリンク先のシート名となっています。ブックBは複数あり、ハイパーリンクごとにリンク先が異なります。
  • また、ブックBを開くたびにマクロ有効無効のメッセージが表示されますが、Excel2003のためのものです。3つの項目をコピペする必要があります。

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

  • ベストアンサー
回答No.5

一応、適当ですが見本。 見比べてみましょう。 Sub test() Dim i As Long Dim ThisBook As Workbook, LinkBook As Workbook Set ThisBook = ActiveWorkbook For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row If ThisBook.Sheets("シート名").Cells(i, 3) <> "" Then Cells(i, 1).Hyperlinks.Item(1).Follow Set LinkBook = ActiveWorkbook ThisBook.Sheets("シート名").Cells(i, 11).Value = LinkBook.Sheets("シート名").Range("C13").Value ThisBook.Sheets("シート名").Cells(i, 12).Value = LinkBook.Sheets("シート名").Range("H6").Value ThisBook.Sheets("シート名").Cells(i, 13).Value = LinkBook.Sheets("シート名").Range("G13").Value LinkBook.Close SaveChanges:=False End If Next End Sub 必要なところは補完してください。 その上で、まだ必要なら質問ください。 きっと、親切なみなさんが答えてくれますよ。

hirotomo81
質問者

お礼

見本を作成いただきありがとうございます!補完して完成しました! もっと勉強が必要ですね。懲りずに頑張ってみます。

その他の回答 (4)

回答No.4

何と言うか、添削がどうのこうの以前に基本から。 > 参照が不正となります。 変数を使う前に「どんなデータなのか」を宣言しないといけません。 例えば sFindbook = "" とありますが、この変数は何?ってのがVBAにはわからないので。 > Exit For を使うと、繰り返し処理から抜けてしまいます。 繰り返したいなら、For~Nextの間に処理を書きます。   For i = 1 To LastRow     If 条件 Then       ~処理~     End IF   Next i が基本形です。

hirotomo81
質問者

お礼

ご指摘もいただきありがとうございます。 つぎはぎで作ったものなので、Exit Forを除いて処理を繋げる部分で苦慮していました。 変数の宣言ももう少し勉強します。

回答No.3

なるほど、そのマクロを「作れ」ってことですね? それは無理な注文ですね。 「マクロの記録」でWEB検索してみましょう。

hirotomo81
質問者

お礼

ありがとうございます。そうですね、いくら初心者といえ他力本願すぎたと反省してます。 補足にたたき台の構文を載せましたので、アドバイスいただければ幸いです。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

ブック名やブックのホルダ名、セルの位置が指定されて いないので、コードが書けないんですが、別にブックBは 開かなくていいんじゃないですか? 例えば、ブックAの必要なセルに Selection.Formuta = "='ブックBのパス[ブックBのブック名]ブックBのシート名'!$A$1" とすれば、ブックBのセルA1のデータを引っ張ってこられます。

hirotomo81
質問者

補足

早速のご回答ありがとうございます。あえてブックBは開く必要はありませんのでSellectionFomulaでもいいのですが、対象が100件超ありブック名もシート名も変動しますので、VBAのほうが効率的かと考えています。 つぎはぎで以下の構文まで作成しています。最後のEnd Ifの次にNext iを加えて、次の空白セル以降も同じ作業をリピートしたいのですが、変数の参照が不正となります。 実行の条件を、Cells(i,3)が空白の場合にリンク先からコピペとしたいのです。 よろしくお願いします。 Sub test() Dim i, LastRow As Long LastRow = Cells(Rows.Count, 3).End(xlUp).Row For i = 2 To LastRow If Cells(i, 3).Value = "" Then Cells(i, 2).Hyperlinks.Item(1).Follow Application.EnableEvents = False Exit For End If Next sFindbook = "" For Each wbk In Workbooks If wbk.Name <> ThisWorkbook.Name Then sFindbook = wbk.Name Exit For End If Next wbk Windows(sFindbook).Activate ThisWorkbook.Sheets("ブックAのシート名").Cells(i, 11) = ActiveWindow.ActiveSheet.Range("C13") ThisWorkbook.Sheets("ブックAのシート名").Cells(i, 12) = ActiveWindow.ActiveSheet.Range("H6") ThisWorkbook.Sheets("ブックAのシート名").Cells(i, 13) = ActiveWindow.ActiveSheet.Range("G13") ActiveWindow.Close End Sub

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

マクロで記録して編集すればよいですよ。

hirotomo81
質問者

お礼

早速のご回答ありがとうございます。 マクロで記録できればいいのですが、ブック名やシート名が変わるので単純な記録では対応できませんでした。

関連するQ&A