質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

2033閲覧

VBA:指定のファイルから別ファイルへデータのコピーを行いたい

zuzu1984

総合スコア31

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/09/10 15:53

VBAで指定の参照元ファイルから指定の別ファイルへデータのコピーが行いたいです。

File_A(参照元)、File_B(移行先)の2ファイルがあります
File_Aから「No.10」を検索し、その行のデータを別ファイルの指定ヵ所にコピーしたいです。

▼File_A(イメージ)
イメージ説明
▼File_B(イメージ)
イメージ説明

更に別ファイルでファイル名を選択し、その名に応じてコピーするデータを変えたいので、
上記以外のコードが入っていますがかなり手前の方で煮詰まってしまいました。

Sub データの取込() '指定したファイル(参照元ファイル)を取り込み、別ファイル(データ移行先)に貼り付ける Dim SetFile As String Dim BaseFile, migrationFile As Workbook Dim File_A, File_B As String File_A = 参照元ファイル File_B = 移行先ファイル '[参照元ファイル]データ取込セット Set BaseFile = ActiveWorkbook Application.DisplayAlerts = False 'データファイルの取込場所をセット If Range(C2) = File_A Then SetFile = "C:\Users\XXX\YYYYY.xlsx" 'ファイルを読み取り専用で開く Workbooks.Open Filename = SetFile, ReadOnly:=True, UpdateLinks:=0 '開いたファイルをセット Set BaseFile = Workbooks.Open(SetFile) 'No.の検索 End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/09/10 21:59

問題はなんでしょうか
guest

回答1

0

こまかい仕様は不明なので、
とりあえず、イメージ画像を元に、参照元から移行先にコピーするコード例です。

vba

1Sub データの取込() 2 '検索No. 3 Dim findNo As String 4 findNo = "No.10" 5 6 '参照元ブックを開く 7 Dim Moto As Workbook 8 Set Moto = Workbooks.Open("C:\Users\XXX\参照元.xlsx") 9 '移行先ブックを開く 10 Dim Saki As Workbook 11 Set Saki = Workbooks.Open("C:\Users\XXX\移行先.xlsx") 12 13 '参照元シート 14 Dim Moto As Worksheet 15 Set MotoS = Moto.Worksheets(1) 16 Dim SakiS As Worksheet 17 Set SakiS = Saki.Worksheets(1) 18 19 On Error Resume Next 20 'No.の検索 21 Dim r As Long 22 r = WorksheetFunction.Match(findNo, MotoS.Range("B3:B" & Rows.Count), 0) 23 If Err <> 0 Then 24 MsgBox findNo & "は存在しません。" 25 Exit Sub 26 Next 27 On Error GoTo 0 28 29 '転記処理 30 SakiS.Range("B3").Value = findNo 31 SakiS.Range("C3").Value = MotoS.Range("C" & r).Value 32 SakiS.Range("C4").Value = MotoS.Range("E" & r).Value 33 SakiS.Range("C5").Value = MotoS.Range("D" & r).Value 34 SakiS.Range("C6").Value = MotoS.Range("F" & r).Value 35 36End Sub

投稿2021/09/11 01:19

hatena19

総合スコア33795

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問