
500のエクセルファイルがあり、それぞれのエクセルデータのA2からF2までのデータのをまとめた一覧表(1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、という感じでです)のを、新しいエクセルファイルもしくはテキストなどにでも手早く作れる方法をご存知の方、ご教授ください。コピペでやっていますが嫌になってしまいました。。マクロも触っては見たのですが、2枚目のエクセルファイルを2行目に、3枚目のエクセルファイルを3行目になどの方法の解決は思いつかず、挫折しました。よろしくお願いいたします
No.4ベストアンサー
- 回答日時:
対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。
Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
Me.Range(Cells(rIdx, 1), Cells(rIdx, 6)).Value = ActiveSheet.Range("A2:F2").Value
Cells(rIdx, 7).Value = fName
Windows(fName).Close
fName = Dir
Loop
End Sub
おかげさまで、一覧表を作ることが出来ました。有難うございました。
マクロ初心者なのでどれが定義語なのかわからず、こんな感じで解析させていただいてます。
Sub getA_F()
getA_F()・・・?保留
Const myPath As String = "c:\sample\"
myPath は文字列として定数扱いとする
Dim rIdx As Long
Dim 変数宣言
Long 長整数型
rIdxは任意の文字
AAAでもかまわない
Dim fName As String
fnameは文字列として
fName = Dir(myPath & "*.xls")
Do Until fName = ""
保留
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
繰り返し作業定義
Me.Range(Cells(rIdx, 1), Cells(rIdx, 6)).Value = ActiveSheet.Range("A2:F2").Value
(Cells(rIdx, 1), Cells(rIdx, 6))の範囲について開いたファイルの("A2:F2")で置き換え
Cells(rIdx, 7).Value = fName
(rIdx, 7)のセルにfName代入
・・・・・
まだ半分以下もわからず、悪戦苦闘しております。
お世話になりました。
No.5
- 回答日時:
path は、適切なフルパスに変更してください。
ファイル名は、1.xls、2.xls、... 500.xls と想定しています、これ以外の形式の場合は、filename を変更します。
シート名は、Sheet1 と想定しています、これ以外の場合は、postfix 内の対応する文字列を変更します。
定数を適切に変更して実行できたら、'// 注意 としている行の "A1:F2" を "A1:F500" に変更します。
上記内容がわからない場合、以下のコードは実行しない方がよいと思います。
Sub do_it()
Const path As String = "=""C:\Documents and Settings\Guest\My Documents\[""&"
Const filename As String = "ROW()"
Const postfix As String = "&"".xls]Sheet1'!R2C"""
Dim src As Range
Set src = Range("A1:F2") '// 注意
With src.Columns(1)
.FormulaR1C1 = path + filename + postfix
.FormulaR1C1 = .Value
End With
Dim it As Range
For Each it In src.Columns(1).Cells
it.FormulaR1C1 = "='" + it.Value
Next
src.Columns(1).AutoFill src
src.FormulaR1C1 = src.Value
Set src = Nothing
End Sub
有難うございます。No.4さんのマクロで手一杯でまだ分解解析を行えておりません。後ほどこのマクロからも勉強させていただきます。
私の質問にお答えいただき有難うございました。
ご厚意に厚く御礼申し上げます。
No.3
- 回答日時:
>また、ファイルは連番です。
>エクセルファイル1のA2-F2を、一覧表のA1-F1
エクセルファイル1.xls って事?
それとも、1.xls って事?
あとは、ANo.2さんのコメントをまず理解して下さい。
No.2
- 回答日時:
人間(質問者)がやっているときは、問題にならないが、プログラムでやると、すぐ問題になるのが、500のファイルをどういう範疇で選んでくる(指定する)かです。
プログラムの経験が少ないようで、質問に書いてない。例えば
A.同一フォルダにある(それも対象外は含まれて無いか)
B.ブックがあるフォルダが同一で名前が例えば共通文字列+連番になっているとか。
やりたいことは、各ブックのある決まったシート(これの名称等が同じなのかも書いてない)のA2:F2の6セルのデータを採って、
データ集約ブックの第1行目にセット。
次のブックのA2:F2をデータ集約ブックの第2行目にセットを繰り返す
ということらしい。
必要なVBAのスキルは
(1)フォルダ内のエクセル・ブックの名称を全て捉える。
場合によっては、対象外は捨てる。
(2)Openした・読み込んだあるブックのA2:F2を捉える(Copy)
(3)データ集約ブックに貼り付けか値代入する。
(4)以上繰り返し。終了条件は。
質問者にとっては、丸投げ回答をそのまま使うならともかく、VBAでは荷が重いのでは。
そもそもVBAも経験無いのに500ものブックを作ったり、扱おうというのは、おかしいと思う。設計段階から、少ないブックに収まるよう考えるべきだ。エクセルは、そんなヘビーユーザーに適したサービスは考えられていない。
No.1
- 回答日時:
500のExcelファイルの一覧表は、同じシート名の同じ範囲にあるのですか?
>1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、
1枚目のExcelファイルとは、1個目のファイル?複数シートの1番目?
この回答への補足
有難うございます。
>1枚目のExcelファイルとは、1個目のファイル?複数シートの1番目?
複数シートではなく、複数のファイルになります。すべて同じフォルダに入っております。
また、ファイルは連番です。
一覧表は新規に作成して、
エクセルファイル1のA2-F2を、一覧表のA1-F1
エクセルファイル2のA2-F2を、一覧表のA2-F2
エクセルファイル3のA2-F2を、一覧表のA3-F3
・・・・
にできればなと思っております。
言葉足らずになり申し訳ございません。
もしよろしければお知恵をお貸しください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで、ファイルの分割 と ファイルの集約 1 2022/08/28 08:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
このQ&Aに関連する記事
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでファイルを閉じても...
-
Windows11で画面下の帯の部分で...
-
エクセルを閉じた時、ノッペラ...
-
エクセルの塗りつぶしの色が勝...
-
エクセルにクリックすると指定...
-
エクセルの添付ファイルに記入...
-
エクセルを開いたときのシート
-
400KBのエクセルは重いの?
-
CSVファイルでVBAを動かす方法
-
エクセルVBAでアクセスファイル...
-
エクセルで複数のブックで「元...
-
メモ帳で開く設定を元に戻したい。
-
2つのエクセルファイルをデュ...
-
CSVファイル
-
共有しているEXCELシートのアク...
-
Lotus 1-2-3のファイルをExcel...
-
CSVファイルをカンマ区切りのテ...
-
三四郎のファイルをエクセルで...
-
マックでの画像一括ダウンロー...
-
エクセルデータが消えてしまい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでファイルを閉じても...
-
Windows11で画面下の帯の部分で...
-
Lotus 1-2-3のファイルをExcel...
-
メモ帳で開く設定を元に戻したい。
-
エクセルで複数のブックで「元...
-
エクセルの添付ファイルに記入...
-
エクセルを閉じた時、ノッペラ...
-
CSVファイルでVBAを動かす方法
-
400KBのエクセルは重いの?
-
エクセルを開いたときのシート
-
共有しているEXCELシートのアク...
-
CSVファイル
-
エクセルの塗りつぶしの色が勝...
-
エクセルVBAでアクセスファイル...
-
開くと警告の出るExcelファイル...
-
Google Todoリスト
-
エクセルにクリックすると指定...
-
ExcelファイルがDoxillionに突...
-
メモ帳(拡張子log)の数字デー...
-
エクセルの中にエクセルを添付...
おすすめ情報