マクロの初心者で普段はマクロの記録を使って簡単なマクロを作っています。今回お尋ねしたいことは、特定のフォルダに入っているExcelのブックからデータを抽出したいと考えており、自身でも調べてみましたが、なかなか上手くいきません。
具体的にはパソコン上に「0601」「0602」・・・・と日付のフォルダを作成し、その中に複数のExcelのブックを格納しています。ファイルは2種類あり、「個人名の名前のファイル」と「集計用ファイル」があります。「個人名ファイル」は複数あり、「集計用ファイル」は1つです。
「個人名ファイル」の中には「投入シート」というシートがあり、そのシートのA2のセルとB2のセルのデータをコピーして、「集計用ファイル」のA列とB列の1行目から順にに張り付けています。10個の「個人名ファイル」があれば、それを10回繰り返しています。
この作業を自動化して、まず特定のフォルダを選択し、選択されたフォルダの中にある「個人名ファイル」の投入シートからA2とB2のデータをコピーして「集計用ファイル」に貼り付けていく作業のマクロが作成できないかなと思っています。な「個人名ファイル」はそれぞれパスワードを掛けています。」
この様なマクロは作成できないでしょうか?ご指導いただければ幸いです。
No.2ベストアンサー
- 回答日時:
No1です
>任意のフォルダを指定するにはどのように修正すればよいでしょうか?
もう、自己解決なさっていらっしゃるようですが、ご参考までに。
ファイル選択用のダイアログにも何種類かあるようです
http://officetanaka.net/excel/vba/tips/tips154.htm
このあたりが一般的かと
http://officetanaka.net/excel/vba/file/file02.htm
https://msdn.microsoft.com/ja-jp/vba/excel-vba/a …
No.1
- 回答日時:
こんにちは
「個人名ファイル」は固定でどこかにリストのようなものが存在するのか、あるいはフォルダ内のファイルを総当たりで(集計用ファイルを除く)で処理すれば良いのかなどが不明ですが、仮に全部のファイルを処理するものと仮定すれば、概ね以下の手順で可能と思います。
1)ダイアログ等を表示し、フォルダを指定してもらう
2)指定フォルダ内の「集計用ファイル」を開いておく
(集計用ファイルの該当シートのA、B列をクリア)
3)フォルダ内の各ファイルについて順に以下をループ
・ファイル名が「集計用ファイル」であれば処理をスキップ
・ファイルを開く
・「投入シート」のA2:B2の値を集計用ファイルに転記
・ファイルを閉じる
4)「集計用ファイル」を保存(閉じる)
直接全体を作成しても良いですが、大変な場合は、まず、3)の部分の「一つのファイルの処理(ブックを開き、データを読み、転記したら閉じる)」を作成してみるのが良いかも知れません。
その際に、最終的に可変になるものは、変数にしておいて変数の内容が変われば別のファイルを処理できる形で作成しておくのがコツと言えばコツです。
1ファイル分の処理がきちんと動作することを確認した上で、それを利用して複数ファイルの処理を行うという考え方です。
ご質問の例で言えば、
フォルダパス、ファイル名、出力先
などを変数化しておくと、後の作業がスムーズに進むと思います。
一つの例として、最初に3)の部分だけを作成する際には
Sub fileTreat()
folderPath = "hogehoge"
faileName = "fugafuga"
set outputRange = ActiveSheet.Range("A1")
'上の変数を使って、1ファイル分の処理を行う
End Sub
のような形で作成しておいて、きちんとデバッグ終わったら
Sub fileTreat(folderPath, fileName, outputRange)
'1ファイル分の処理
End Sub
のような形に変えることで、フィアル等を指定してこのサブルーチンを呼び出せばそのファイルの処理はしてくれるようになるので、順に指定しながらループで呼び出せば良くなりそうな気がしませんか?
上では、説明上の都合上でサブルーチン化して説明していますが、実際の処理では、サブルーチン化しなければならないというほどのものでもないように思います。
とは言え、ひとつひとつの手順をコード化してゆく際には、わからない点がいろいろ出てくるものと想像します。
個別の具体的な不明点であれば、それをキーに検索することで、いま時であれば大抵のことは答えがみつかるはずですので、一度に全部を何とかしようとするのではなく、ひとつずつ順に解決してゆくことが、結果的には全体の解決への近道になるものと思います。
頑張ってください。
回答有難うございました。もう少し伺いたいんですが
回答を参考にネットで調べながらマクロを以下のように作成してみました。
下のマクロではフォルダを指定しており、自分で任意のフォルダを指定できません。
任意のフォルダを指定するにはどのように修正すればよいでしょうか?
Sub macro1()
Dim myFile As String
Dim myPath As String
myPath = "C:\0601\"
myFile = Dir(myPath & "*.xlsx")
Do Until myFile = ""
Workbooks.Open myPath & myFile
With Workbooks("集計シート.xlsm").Worksheets("Sheet1").Range("A65536").End(xlUp)
.Offset(1, 0).Value = myFilev
.Offset(1, 1).Value = Workbooks(myFile).Worksheets("投入シート").Range("A2").Value
.Offset(2, 1).Value = Workbooks(myFile).Worksheets("投入シート").Range("B2").Value
End With
Workbooks(myFile).Close savechanges:=False
myFile = Dir()
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
EXCELのマクロを使って、テキス...
-
【マクロ】シート名を取得する...
-
エクセルを選択して開き印刷す...
-
ホームページビルダー7でHPっを...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
excelに貼り付けた数値が勝手に...
-
CSVで文字化けしてしまうのを直...
-
エクセルファイルから指定した...
-
ローマ字→カタカナへ変換(エク...
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
複数ファイルにある特定のシー...
-
エラーになってないのにVBA...
-
Excel VBA のdebug(F8キー) が...
-
EXCELのセルへ、デジタル時計を...
-
【Excel VBA】エラー番号400
-
Excelを開いた時に表示さ...
-
マクロ 実行ボタンを押さずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
ファイルを並び替えるときの「...
-
VLOOKUP関数とネットワークに置...
-
エクセル 一括リンクの解除
-
excel INDIRECT 他ファイル参照
-
エクセルファイルから指定した...
-
エディタで効率的な切り出し方法
-
PDF ファイルが開けません。
-
EXCELのマクロを使って、テキス...
-
ハイパーリンクで前回値をひき...
-
エクセルからスキャナVBAで連動...
-
EXCEL VBA ー 同一フォルダ内の...
-
CSVで文字化けしてしまうのを直...
-
エクセルマクロでファイルオー...
-
ミュージックファイルのファイ...
-
エクセルVBAでファイルを連...
-
エクセルVBA+ADOで特定のCSVフ...
おすすめ情報
Sub macro1()
Dim Mypath As String
Dim MyFile As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
Mypath = .SelectedItems(1)
MyFile = Dir(Mypath & "\*.xls")
Do Until MyFile = ""
----------------------------------------------------------------
-----------------------------------------------------------------
Loop
End If
End With
End Sub