どなたが助けてください。
エクセルのファイルが一つのフォルダの中に
沢山あります。(CSVの場合もあります)
各ファイルには複数のシートが入っていて
シート名はバラバラです。
各シートのに入っているデータは
縦は500行目まで、横は端から端まで(A列→IV列)です。
この沢山のエクセルファイルの全シートを
一つのシートに自動的に読み込んで
縦てに並べたいのです。
1ファイルの中にある全シート(1枚しかシートがない
ものもあれば5枚あるものもあり もれなく全部)
の500行目までを
別の新しいエクセルファイルのシートに縦に並べて
次のファイルをまた開いて全シートを
先ほど並べたデータの下にまた並べて・・・・と
繰り返して一つのフォルダの中にあるエクセルファイルの全シート重複せずに並べるような
マクロをどなたか教えて頂けないでしょうか?
ファイル数が大変多く、本当に困っています。
よろしくお願いいたします。
No.8
- 回答日時:
どのように実行してますか?
ツール→マクロ→マクロ でSyuuyakuを選んで 実行ボタン
または
Visual Basic Editor の画面で、カーソルをSyuuyakuサブルーチンの中に置いてF5キー
またこのコードは、各シートの1行目から順にデータを転送する。
A列が空の行が有るとそこで転送を終了して次のシートに処理を移す。
ので、各シートのA1が空なら何もしません。
ブレークポイントを (※F9キーで設定できる)
Workbooks.Open Folder & myFile
For row = 1 To 500
For col = 1 To 256
の各行に設定してマクロを実行して、
ブレークポイントの所まで来るか確認してみてください。
およびmyFileに入っている値の確認。
この回答への補足
ありがとうございます!
対象エクセルのシート、
A1が空でした、無条件で(A1が空白でも何か入っていても)読み取ってくれるようにするには
どうしたら良いですか?
もしご面倒でなければ是非教えてください。
よろしくお願いいたします。
No.6
- 回答日時:
検索するフォルダとは別の場所にエクセルファイルを作成し、
そこのThisWorkbookに下記コードを貼り付けて実行してきてください。
検索するフォルダは、変数Folderに設定します。
エクセルファイルのみ検索します。(csvは無視)
インデントのために全角スペース使ってます。(要置換)
Public Sub Syuuyaku()
Dim myFile As String
Dim Folder As String
Dim srcWb As Workbook
Dim srcSt As Worksheet
Dim dstSt As Worksheet
Dim dstRow As Long
Dim row As Long
Dim col As Long
Set dstSt = ThisWorkbook.Sheets(1)
dstRow = 0
Folder = "D:\Test\"
myFile = Dir(Folder & "*.xls")
Do While myFile <> ""
Workbooks.Open Folder & myFile
Set srcWb = ActiveWorkbook
For Each srcSt In srcWb.Worksheets
For row = 1 To 500 ' 最大500行まで検索
If IsEmpty(srcSt.Cells(row, 1)) Then Exit For
dstRow = dstRow + 1
For col = 1 To 256 ' 全列
dstSt.Cells(dstRow, col).Value = srcSt.Cells(row, col).Value
Next col
Next row
Next
Set srcSt = Nothing
srcWb.Close False
Set srcWb = Nothing
myFile = Dir
Loop
End Sub
この回答への補足
ありがとうございます!
実際、不慣れなのでアドバイスいただいたように
貼り付けてやってみたのですが
何も動きませんでした、すみませんが
もうすこし詳しく教えていただけませんか?
>検索するフォルダとは別の場所にエクセルファイルを作成し、
>そこのThisWorkbookに下記コードを貼り付けて実行してきてください。
→エクセルを別場所に作成しThisWorkbookに
コード部分をコピペしました。
>検索するフォルダは、変数Folderに設定します。
→Folder = "D:\Test\" この""の間のパスを
実際のフォルダのあるパスに書き換えました。
>インデントのために全角スペース使ってます。(要置換)
→置き換えで全角スペースを全て半角スペースに置き換えました。
あと何をしたら動くようになるのでしょうか?
無知ですみません、ここから前に進めませんm(__)m
よろしくお願いいたします。
No.5
- 回答日時:
あ、しまった。
それやると、シート1が消えます。
シート1を追加してください。やる前に。
bookの読み込みについては、本日は時間切れ…。すんません。
この回答への補足
norakumaさま
ありがとうございます、
下に書いていただいたコード、そのままエクセルVBAに
貼り付けてみたのですが
やっぱり動きません。
何か私の設定が悪いのでしょうか?
また明日?NORAKUMAさまお待ちしておりますm(__)m
No.4
- 回答日時:
>1ファイルに数シートあった場合全部のシートを読み出したいと思いました。
これだけなら
Sub test1()
Dim SheetCount As Integer
Dim i As Integer
SheetCount = ActiveWorkbook.Worksheets.Count
For i = 2 To SheetCount
Worksheets(i).Select
Range("A1:A500").CurrentRegion.Select
Selection.Copy
Worksheets(1).Select
If i = 2 Then
Range("A1").Select
Else
Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(1).Select
End If
ActiveSheet.Paste
Next i
End Sub
No.3
- 回答日時:
こんにちは。
エクセルブックのシートを読む原理は簡単ですよ。
1.シート数をカウント。
ActiveWorkbook.Worksheets.Count
2.最後のシートまで順に読み込み、新しいシートに縦に並べてと
やっていけばOKです。
このとき、シート名を指定するのではなくシートの順番で読み込めば
シート名に左右されずに済みます。
フォルダ内のファイル読み込みについては参考URLが参考になるのではないか?と。
参考URL:http://www.accessclub.jp/bbs3/0186/superbeg61242 …
この回答への補足
ありがとうございます!
参考URLにあったコードを入れて動かしてみたのですが
オペレートする側がEXCELではなくACCESSのようで
実際エクセルのVBAに貼り付けてみましたが
うまく動きませんでした。
もしよろしければコードを教えて頂けないでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Excel(エクセル) セルの値からファイルを複数作りたい 2 2022/10/06 12:42
- Excel(エクセル) エクセルでファイル保存時に複数シートのオートフィルタを全て解除したい 1 2023/05/10 13:23
- システム vba シートの追加について 2 2023/05/17 15:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
ExcelのVBAのマクロで他のシー...
-
エクセルで特定のシートのみ自...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ワークシートを追加したときの...
-
ユーザーフォームに入力したデ...
-
ブック名、シート名を他のモジ...
-
集計シートA列のコードと一致す...
-
実行時エラー1004「Select メソ...
-
VBAで、シート間の転記するコー...
-
エクセルVBA Ifでシート名が合...
-
【VBA】色のついたシート名を取得
-
VBA 検索して一致したセル...
-
シート削除のマクロで「delete...
-
API関数ImmSetConversionStatus...
-
ExcelVBA:複数の特定のグラフ...
-
コード名シートA列と集計シート...
-
エクセルのシート名変更で重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報
