一つのフォルダの中に
同じフォームのエクセルファイルが多数あり、
全エクセルファイル内のセルから値を抽出し、
別の新規エクセルファイルに次々と収集する方法はないでしょうか?
コピペだと大変な作業なのでマクロで出来ないかと考えてます。
抽出元ファイルで
申し込み番号とIDの位置はA2,G1と決まっているのですが
合計税込金額はB列ですが表示行は変動します。
またその金額はSUM関数で表示されています。
それらを抽出したの新規エクセルファイルには
マクロを実行した日付を自動で挿入されるようにしたいのですが
可能でしょうか?
完成イメージとして画像を添付しました。
どうかご教授頂けないでしょうか?
No.2ベストアンサー
- 回答日時:
(1)「抽出先のブック」を選択して「Alt+F11」で「Microsoft Visual Basic」を開く
(2)「挿入→標準モジュール」でモジュールを新規作成
(3)以下の「VBAコード」を貼付
(4)右上の「×」で(1)を終了
(5)エクセルメニューの「表示→マクロ」から「取得」を選んで実行
(6)対象のフォルダを選択するダイアログが表示されるのでフォルダを指定
※税込価格の行を取得するために検索するキーワードについて
画像ですと「合計 税込価格」のスペースが全角・半角判断しにくいため現在半角で作成しています。
もし間違っているようであればコード内の以下の部分を適切に修正願います。
word = "合計 税込価格" '検索するキーワード
■VBAコード
Option Explicit
Sub 取得()
'型宣言
Dim buf As String
Dim cnt As Long
Dim dpath As String
Dim tbook As Workbook
Dim lbook As Object
Dim hit As Object
Dim word As String
'準備
Set lbook = ThisWorkbook.ActiveSheet
cnt = 2 '開始行の設定
word = "合計 税込価格" '検索するキーワード
'抽出先のリストを削除
lbook.Range(cnt & ":" & Rows.Count).ClearContents
'フォルダ選択ダイアログ
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
dpath = .SelectedItems(1) & "\"
End If
End With
If dpath = "" Then Exit Sub
'ファイル一覧の取得
buf = Dir(dpath & "*.*")
'ファイルの数だけループ
Do While buf <> ""
Set tbook = Workbooks.Open(Filename:=dpath & buf, ReadOnly:=True) 'ブックを開く
With tbook.ActiveSheet
lbook.Range("A" & cnt).Value = .Range("A2").Value '申し込み番号取得
lbook.Range("B" & cnt).Value = .Range("G1").Value 'ID取得
Set hit = .Cells.Find(word) 'キーワードを検索
If hit Is Nothing Then
lbook.Range("C" & cnt).Value = "不明" 'キーワードが見つからなかった場合「不明」を表示
Else
lbook.Range("C" & cnt).Value = .Range("B" & hit.Row).Value '合計価格の取得
End If
lbook.Range("D" & cnt).Value = Date '日付を取得
End With
tbook.Close 'ブックを閉じる
buf = Dir()
cnt = cnt + 1 'カウントアップ
Loop
End Sub
ありがとうございます。
お教え頂いたとおり実行すれば思った通りの抽出が出来ました。
感謝致します。
このままで終わらせず
eden3616様に記載頂いたVBAコードがどのようにして機能しているのか
解読しながら自分でもVBAを勉強してみます。
No.1
- 回答日時:
>>コピペだと大変な作業なのでマクロで出来ないかと考えてます。
エクセルのマクロは、VBA(Visual Basic for Applications)を使っています。マクロって、自分の行った作業を再現するだけの機能のように思えますけど、れっきとしたプログラム言語であるVisual Basicの命令を生成しているんです。
だから、生成されたVBAのプログラムを自分で追加・加工すれば、相当複雑なことであっても、可能になります。
以下にストーリ仕掛けでVBAを学んでいくサイトがありますので、これを見て勉強すれば、いいかもしれません。
もちろんエクセルVBAの書籍を買ったりするのもいいと思います。
http://vbae.odyssey-com.co.jp/column/index.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
エクセル UserForm 呼び出しで...
-
ExcelブックをGoogleスプレッド...
-
EXCEL 検索時の設定
-
Excel csv保存 列数が異なる場...
-
Wordで差込印刷した後に別々の...
-
エクセルでcsvファイルを開いて...
-
【マクロ】webアドレスにて指定...
-
サブフォルダから部分一致のエ...
-
【Excel VBA】ファイルを保存し...
-
Word2010で閉じるボタン押下後...
-
For~Nextルーチンで最初の1回...
-
大量のCSVファイルをExcel形式...
-
エクセルVBAでCSVファイ...
-
エクセル2007で、「マクロ」形...
-
マクロ実行後、表示がおかしくなる
-
VBA一覧取得 再投稿
-
エクセルで複数のコメントのサ...
-
ファイルサーバ上のファイルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
ExcelブックをGoogleスプレッド...
-
Wordで差込印刷した後に別々の...
-
Excel csv保存 列数が異なる場...
-
エクセルファイル名に更新日時...
-
エクセル UserForm 呼び出しで...
-
サブフォルダから部分一致のエ...
-
実行時エラー52
-
マクロ実行後、表示がおかしくなる
-
エクセルでcsvファイルを開いて...
-
VBAでマクロを使って、マクロ無...
-
複数のexcelのファイルを一括で...
-
PowerPoint 2002でファイル名を...
-
エクセルのマクロで行と列の削...
-
大量のCSVファイルをExcel形式...
-
EXCEL 検索時の設定
-
For~Nextルーチンで最初の1回...
-
処理速度にムラがあり過ぎる
-
エクセルで、フィルタかけたま...
おすすめ情報