プロが教える店舗&オフィスのセキュリティ対策術

複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを教えてくださいm(_ _)m

ディスクトップに3つのExcelブックがあります。
1、通関書類
2、メーカー1
3、メーカー2
メーカー1と2のセルB3とE3より以下の内容を順番に通関書類のシート1に被らないようにコピー貼り付けたい。
でも今後はメーカー3とメーカー4もあるかもしれないので、一応形だけ教えていただければ助かりますm(_ _)m
そうする今後は自分で列を追加できるようになります。
お手数ですが、
ご教示願いたい。頼みます!

質問者からの補足コメント

  • すみません、レイアウトをアップロードします。
    よろしくお願いしますm(_ _)m

    「複数のExcelブックのシート1の内容を」の補足画像1
      補足日時:2023/02/11 11:18

A 回答 (7件)

以下のマクロを通関書類の標準モジュールに登録してください。


マクロでは、
メーカー1のSheet1
メーカー2のSheet1
から、品番、個数を取得しています。
これのSheet1を変える場合は、
Call set_maker("メーカー1", "Sheet1")
Call set_maker("メーカー2", "Sheet1")
の箇所を変えてください。
メーカー3,4を追加する場合は、この後に追加してください。
(メーカー1と同じレイアウトであることが前提です)
マクロの最初で通関書類のB3、E3以降の行をクリアしています。
-----------------------------------------
Option Explicit
Dim ms As Worksheet
Dim mrow As Long
Public Sub 通関書類設定()
Set ms = Worksheets("Sheet1")
ms.Range("B3:B" & Rows.Count).ClearContents
ms.Range("E3:E" & Rows.Count).ClearContents
mrow = 3
Call set_maker("メーカー1", "Sheet1")
Call set_maker("メーカー2", "Sheet1")
MsgBox ("完了")
End Sub

Private Sub set_maker(ByVal book_name As String, ByVal sheet_name)
Dim path As String
Dim wb As Workbook
Dim ws As Worksheet
Dim maxrow As Long
Dim wrow As Long
path = ThisWorkbook.path & "\" & book_name & ".xlsx"
Set wb = Workbooks.Open(path)
Set ws = wb.Worksheets(sheet_name)
maxrow = ws.Cells(Rows.Count, "B").End(xlUp).Row
For wrow = 3 To maxrow
ms.Cells(mrow, "B").Value = ws.Cells(wrow, "B").Value '品番
ms.Cells(mrow, "E").Value = ws.Cells(wrow, "E").Value '個数
mrow = mrow + 1
Next
wb.Close
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます。やってみます!大変助かりましたm(_ _)m

お礼日時:2023/02/11 15:09

追加の補足要求です。


4.3つのブックは、オープン済みの状態でしょうか。
それとも、クローズされている状態でしょうか。
(通関書類にマクロを組み込んだ場合は、2つのブックと読み替えてください)
質問の意図は、「マクロは、ブックのオープンを行うのか否か」という確認です。
    • good
    • 0
この回答へのお礼

度々のご返信ありがとうございます。
通関書類は自分で開いてマクロを実行するので、チェックし、後で手動で閉じます。
メーカー1と2は閉じてる状態でマクロでデータを読み取って、その後自動的に閉じる形にして頂けるとありがたいですm(_ _)m
よろしくお願いしますm(_ _)m

お礼日時:2023/02/11 14:31

追加の補足要求です。


1.ブック名とシート名の確認です。
① ブック名:通関書類.xlsx シート名:Sheet1
② ブック名:メーカー1.xlsx シート名:不明
③ ブック名:メーカー2.xlsx シート名:不明

ブック名は上記で間違いないでしょうか。(1,2の数字は半角の1,2です)
シート名の不明の箇所を提示していただけませんでしょうか。

2.マクロを登録するブックですが、どのブックに登録しますか。
1案: 通関書類
2案:メーカー1又はメーカー2(これは考えにくい)
3案:上記以外
こちらとしては、1案を推奨します。

3.マクロ実行時、既に通関書類のSheet1のB3以降及びE3以降にデータがあった場合、
そのデータは上書きされなくなりますが、それでよろしいでしょうか。
    • good
    • 1
この回答へのお礼

ご返信ありがとうございます
1、通関書類というブックのシートは1番目でシートでいいです。メーカー1とメーカー2のシート名は自分で指定できるようにして頂けると助かります。自分でシート名を変更することができます。ありがとうございます。

2、マクロを登録するブックは通関書類というブックで大丈夫です。

3、基本的に全て新規で登録するのでもしデータを入れる前にB3とE3以降のデータをクリアできるコードを入れていただければ助かりますが、後ほど自分で追加も出来そうです笑。

大変お手数ですが、
よろしくお願いしますm(_ _)m

お礼日時:2023/02/11 14:29

補足ありがとうございました。



マクロ実行前のメーカー1とメーカー2の内容、
及びマクロ実行後の通関書類の内容です。

メーカー1の内容
https://gyazo.com/50b2d0e61962b34ba292d25fb8f23ff7

メーカー2の内容
https://gyazo.com/57c074c95324c8265ae275679e32ecd8

通関書類の内容 (マクロ実行結果)
https://gyazo.com/e0e9c845ee6014823f331c2581631bc3

(赤線がメーカー1の分、青線がメーカー2の分になります)

質問1.このようにしたいと、いうことでしょうか。

質問2.「被らないようにコピー貼り付けたい。」とは、品番が同じものがあれば、
どちらかをコピーしないというようにも受け取れます。
もし、そうであれば、具体的に例を挙げて説明していただけませんでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
1、そのような効果ですね。
2、基本的にメーカーの品番それぞれ違うので同じ品番の可能性は極めて低いので、そのまま貼り付けたいのです。大丈夫です。通関手続き上、同じ品番だから省けることはありません笑

お礼日時:2023/02/11 12:44

No2です。

画像の添付が漏れていましたので添付します。
「複数のExcelブックのシート1の内容を」の回答画像3
    • good
    • 0
この回答へのお礼

申し訳ございません。補足をアップロードしました よろしくお願いしますm(_ _)m

お礼日時:2023/02/11 11:19

通関書類のレイアウトが判りません。


添付の画像のようなレイアウトが判るものを提示していただけませんでしょうか。
特に、各セルの行番号、列番号が判るようにそのガイドも含めてください。
(赤線で囲んだところです)



>メーカー1と2のセルB3とE3より以下の内容を順番に通関書類のシート1に被らないようにコピー貼り付けたい。

シート1にかぶらないようにとは、どういうことでしょうか。
具体的に例を挙げて説明していただけませんでしょうか。
    • good
    • 0

VBAについては一度ご自身でコードをつくって動かなければ質問するという方が良い回答がつきますよ。

ここはVBAコード作成の請負の場所ではありませんので。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!