
【やりたい事】
ブックAからブックBへデータを貼付したい
貼付先ブックBのシートは4つある(シート① シート② シート③ シート④)
⇒シート①にデータがあった場合、シート②へ貼付をしたい
【手順】
1a_20250529123939.xlsx を開く。下記参考コードあり
2シート①に貼り付けようとする。下記参考コードあり
3シート①の最終行が2行目まである場合⇒次のシート②へ貼付けする
※シート②は最終行が2行目より小さい。貼り付け可能
※シート①から④は、次のいずれかどっち
⇒パターン1:データが2行目以上ある。パターン2:データが1つもない。空シート
4シート②へ貼り付け
5a_20250529123939.xlsxを閉じる
【ファイルパス】
貼付元エクセル。シート1つだけ。シート名不規則
C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\a_20250529123939.xlsx
ファイル名⇒a_20250529123939.xlsx
貼付先エクセル
C:\Users\user\Documents\ツール\ツール.xlsm
貼付先シート4つ⇒ シート① シート② シート③ シート④
ファイル名⇒ツール.xlsm
マクロが保存されているファイル
C:\Users\user\Documents\ツール\コントロール.xlsm
ファイル名⇒コントロール.xlsm
【参考コード】ファイルを開き、シート①へ貼り付けするコード
Sub フォルダ内のファイル1つ開く()
Dim folder_path As String ' インプットファイルのフォルダパス
Dim file_name As String ' 現在処理中のファイル名
Dim file_path As String ' 現在処理中のファイルのフルパス
Dim file_count As Long ' フォルダ内のファイル数
Dim src_wb As Workbook ' 処理対象のブックオブジェクト
' フォルダパスの設定
folder_path = "C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\"
' フォルダ内のファイル確認
file_count = 0
file_name = Dir(folder_path & "*.csv") ' フォルダ内のExcelファイルを取得
Do While file_name <> ""
file_count = file_count + 1 ' ファイル数をカウント
file_path = folder_path & file_name ' ファイルパスを生成
file_name = Dir() ' 次のファイルを取得
Loop
' ファイル数が1でない場合は、プロセスを終了
If file_count <> 1 Then
MsgBox "CSVファイルが2個以上あります" & vbCrLf & _
"CSVファイル: " & file_count, vbExclamation
Exit Sub '条件を満たさない場合、これ以上処理を続けないために終了
End If
' 対象ファイルを開く
Set src_wb = Workbooks.Open(file_path)
' 貼り付け先のブックを開く
Dim wb1 As Workbook
filepath = "C:\Users\user\Documents\ツール\ツール.xlsm"
Set wb1 = Workbooks.Open(filepath)
Dim allsheet As Variant
' シート4つを配列変数に入れる
allsheet = Array("シート①", "シート②", "シート③", "シート④")
src_wb.Worksheets(1).Cells(1, 1).CurrentRegion.Copy
wb1.Worksheets(allsheet(0)).Cells(1, 1).PasteSpecial Paste:=xlPasteValues
End Sub


- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>Q1.コードの中でフォルダパス1つファイルパス1つの合計2
つですよね?
回答:
① folder_path = "C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\"
② filepath = "C:\Users\user\Documents\ツール\ツール.xlsm"
のことでしょうか。そうでしたら2つです。
>Q2.本コードは、データを転記したいファイルは1つだけ
フォルダに設置して動く仕組みですよね?⇒動きました
回答:はい、そうです。
No.2
- 回答日時:
No1です。
以下の行ですが
①folder_path = "C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\"
②folder_path = "D:\goo\data\ダウンロード場所\"
③filepath = "C:\Users\user\Documents\ツール\ツール.xlsm"
④filepath = "D:\goo\excel\ツール.xlsx"
③、④の行を削除してください。
こちらの環境ように修正した行を削除し忘れてました。
tatsumaru77 様
大変、有用なコードを正確にかつ素早く、ご指南頂きまして
ありがとうございます
うまく、動きました。思い通りのコードなりました
ただ、まだ、私が全て、理解していない所だけでございます
なお、以下質問です。お手すきな時に教えて下さい
【質問】
Q1.コードの中でフォルダパス1つファイルパス1つの合計2
つですよね?
下記のとおりフォルダパスとファイルパスを設定したところ
うまく、動きました
Q2.本コードは、データを転記したいファイルは1つだけ
フォルダに設置して動く仕組みですよね?⇒動きました
' 開きたいファイルが保管されているフォルダパスの設定
ファイル保管数は1つ
folder_path = "C:\Users\2020\OneDrive\マクロ\ツール\ダウンロード場所\ファイル名変更場所\"
'貼付先ツールのファイルパス
filepath = "C:\Users\2020\OneDrive\マクロ\ツール\ツール.xlsm"
なお、別件まだ、内容確認中です
理解できましたら、質問させて頂きたいと思います
No.1
- 回答日時:
以下のようにしてください。
Option Explicit
Sub フォルダ内のファイル1つコピー()
Dim folder_path As String ' インプットファイルのフォルダパス
Dim file_name As String ' 現在処理中のファイル名
Dim file_path As String ' 現在処理中のファイルのフルパス
Dim file_count As Long ' フォルダ内のファイル数
Dim src_wb As Workbook ' 処理対象のブックオブジェクト
' フォルダパスの設定
folder_path = "C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\"
folder_path = "D:\goo\data\ダウンロード場所\"
' フォルダ内のファイル確認
file_count = 0
file_name = Dir(folder_path & "*.csv") ' フォルダ内のExcelファイルを取得
Do While file_name <> ""
file_count = file_count + 1 ' ファイル数をカウント
file_path = folder_path & file_name ' ファイルパスを生成
file_name = Dir() ' 次のファイルを取得
Loop
' ファイル数が1でない場合は、プロセスを終了
If file_count <> 1 Then
MsgBox "CSVファイルが2個以上あります" & vbCrLf & _
"CSVファイル: " & file_count, vbExclamation
Exit Sub '条件を満たさない場合、これ以上処理を続けないために終了
End If
' 対象ファイルを開く
Set src_wb = Workbooks.Open(file_path)
' 貼り付け先のブックを開く
Dim wb1 As Workbook
Dim filepath As String
filepath = "C:\Users\user\Documents\ツール\ツール.xlsm"
filepath = "D:\goo\excel\ツール.xlsx"
Set wb1 = Workbooks.Open(filepath)
Dim allsheet As Variant
' シート4つを配列変数に入れる
allsheet = Array("シート①", "シート②", "シート③", "シート④")
'空きシートを検索する
Dim sname As String
sname = GetEmptySheet(wb1, allsheet)
If sname = "" Then
MsgBox ("空きシート無し")
Exit Sub
End If
src_wb.Worksheets(1).Cells(1, 1).CurrentRegion.Copy
wb1.Worksheets(sname).Cells(1, 1).PasteSpecial Paste:=xlPasteValues
MsgBox (sname & "へコピーしました")
End Sub
'空きシート名取得関数
'戻り値:空きシートのシート名(""の場合空きシート無し)
Private Function GetEmptySheet(wb1 As Workbook, allsheet As Variant) As String
Dim i As Long
Dim sname As String
Dim lastRow As Long
For i = 0 To UBound(allsheet)
sname = allsheet(i)
lastRow = wb1.Worksheets(sname).Cells(Rows.Count, 1).End(xlUp).Row
If lastRow < 2 Then
GetEmptySheet = sname
Exit Function
End If
Next
GetEmptySheet = ""
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】A列にある、日付(本日:4月17日)を検索し、セルを選択するには?
Excel(エクセル)
-
【マクロ画像あり】❶1つの条件一致❷1つの条件に部分一致❸最終行データコピー❶❷❸実現するマクロの件
Excel(エクセル)
-
【マクロ】既存ファイルの名前の先頭に、プルダウン(3種類)のいずれか1種類の名前をつけるためには?
Excel(エクセル)
-
-
4
【マクロ】【画像あり】ファイル名を別名にて保存。元ファイルはゴミ箱へ移動⇒する方法について
Excel(エクセル)
-
5
Dir関数のDo Whileステートメントにおける1回目と2回目のファイル名の呼出し方法の違い
Excel(エクセル)
-
6
【マクロ】【画像あり】4つのファイルデータを1つのエクセルブックにある4つのシートへそれぞれコピー
Excel(エクセル)
-
7
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
8
findメソッドで、10:00:01 を検索をして、メッセージボックスにセル番地と時間が表示できない
Excel(エクセル)
-
9
【マクロ】【配列】3つのシートに、同じ作業をしたい
Excel(エクセル)
-
10
条件付書式設定にて、本日の日付を条件として、2行分にセルに色を付けるには?
Excel(エクセル)
-
11
エクセルについて教えてください
Excel(エクセル)
-
12
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
13
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
14
【マクロ】【画像あり】関数が入っているセルを空白とみなさないように出来ますか?
Excel(エクセル)
-
15
vba テキストボックスとリフトボックスについて
Excel(エクセル)
-
16
エクセルの循環参照、?
Excel(エクセル)
-
17
エクセルの複雑なシフト表から当日の出勤者と勤務時間帯を抜き出したい
Excel(エクセル)
-
18
【マクロ】アクティブセルの時間を別ブックから検索。見つかったセルを含めた最終行まで選択したい
Excel(エクセル)
-
19
【マクロ】findメソッドで見つけたセルと他のセルの範囲指定のやり方について
Excel(エクセル)
-
20
【エクセル】期限アラートについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
【マクロ】【画像あり】❶ブック...
-
Excelファイルをダブルクリック...
-
エクセルを共有するとPCによっ...
-
【マクロ】【画像あり】ファイ...
-
Excelでブックの共有を掛けると...
-
フォルダ内の複数ファイルから...
-
エクセルでウィンドウの枠固定...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
WorkBooksをオープンさせずにシ...
-
ブックのピボットを別ブックに...
-
「ブックの共有」を有効にして...
-
指定ファィルの指定シートをシ...
-
参照したいブックのパス名に"["
-
VBA バックグラウンドで別ブッ...
-
Excelで複数ブックの同一セルに...
-
Excelの警告について
-
【マクロ】アクティブセルの時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
Excelファイルをダブルクリック...
-
Excelでブックの共有を掛けると...
-
「ブックの共有」を有効にして...
-
Excel(2010)のフィルターが保...
-
Excelの新しい空白のブックを開...
-
同じフォルダへのハイパーリン...
-
フォルダ内の複数ファイルから...
-
エクセルで別ブックをバックグ...
-
別ブックから入力規則でリスト...
-
ブックのピボットを別ブックに...
-
エクセルでウィンドウの枠固定...
-
エクセルにおける,「ブック」...
-
Excelで複数ブックの同一セルに...
-
Excelで指定範囲のデータ...
おすすめ情報