
解析ファイル(マクロを組むファイル)のあるフォルダ内にデータファイルが複数あります。
そのなかで.csvデータファイルのみを抽出し、そのファイルのデータを解析ファイルのシート1に12行目から並べていきたいです。
.csvデータファイルには各々シート1のB2:B100にデータが入っています。
つまりは 解析ファイルsheet1に
11行目まで 空欄
12行目 .csvデータ1のB2:B100
13行目 .csvデータ2のB2:B100
14行目 .csvデータ3のB2:B100
・
・
・
のように並べていきたいです。
以下のようにマクロをくんだのですが、データが解析ファイルのシート1に表示されません(マクロを実行する前と変わりません)。
Public Sub データを抽出()
Dim i As Long
Dim buf As String
'ワークシート変数の宣言
Dim dstSheet As Worksheet
'現在のブック内のワークシートの1番目を代入
Set dstSheet = ThisWorkbook.Sheets(1)
'フォルダ内すべてのExcelファイル名を取得
buf = Dir(ThisWorkbook.Path & "\*.csv")
i = 11
'ループ処理
Do While buf <> ""
i = i + 1
'ワークブック変数の宣言
Dim srcBook As Workbook
'ワークブックの代入
Set srcBook = Workbooks.Open(ThisWorkbook.Path & "\" & buf)
'ワークシート変数の宣言
Dim srcSheet As Worksheet
'ワークシートの代入
Set srcSheet = srcBook.Sheets(1)
'データの移行
dstSheet.Cells(i, 2).Value = srcSheet.Cells(2, 1).Resize(1, 100)
'ファイルを閉じる
srcBook.Close False
buf = Dir()
Loop
End Sub
説明下手で申し訳ございません。
どこに問題があるか、どなたかご教授いただければ幸いです。
No.2ベストアンサー
- 回答日時:
No1です。
>正しくはB2:CV2です。
少なくともスタートの、.Cells(2, 1) はA2セルなのでおかしいのかと・・・
No1に書き忘れましたが、Copyメソッドなどの場合は、転記先の先頭セルを指定すれば、同サイズのセル範囲にペーストしてくれますが、ご提示の様な
.Value = .Value
形式の転記の場合は、左辺もきちんとセル範囲を指定しないと、Copyメソッドのようにはいきません。指定したセルのみに転記されます。
要は、
>dstSheet.Cells(i, 2).Value
で指定している、B列の1セルのみに転記されることになります。
想像するところ、右辺はA列からを指定していて(A列が空欄なので)、転記先のB列には空欄だけが転記されているのではないでしょうか?
その結果、
>データが解析ファイルのシート1に表示されません
となっているのではないかと推測します。
質問を投稿するにあたり、分かりやすくなるようにと本来のものとは別に書き換えたのがかえって悪かったと思っております。混乱させてしまい申し訳ございません。
頂いた内容をもとに一度自分で整理してみます。
お時間を取らせてしまい申し訳ございませんでした。
No.1
- 回答日時:
こんにちは
ご質問文の文章の方を見ると
>12行目 .csvデータ1のB2:B100
となっているけれど、一方で、コードの方は
>srcSheet.Cells(2, 1).Resize(1, 100)
となっていますよ。
Cells(2, 1).Resize(1, 100)は、セル範囲に直すと「A2:CV2」ですけれど?
(どちらが正しいのかわかりませんが、とりあえず矛盾しているので)
また、文章が正しいとするなら、元データの「列」を転記先の「行」にセットするので、列と行の変換も必要ではないかと思われます。
ご回答ありがとうございます。文章が間違っておりました。正しくはB2:CV2です。
そのため、列と行の変換は必要ないと思われます。
列と行がごちゃまぜになっていました、失礼いたしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
祝日を除いた月曜から土曜まで...
-
【Excel VBA】自動メール送信の...
-
worksheetsプロパティでエラー...
-
VBAで変数の数/変数名を動的に...
-
アクセスからエクセルへ出力時...
-
Count Ifのセルの範囲指定に変...
-
VBAで、1つのエクセルで、2つの...
-
グラフマクロで系列を変数にす...
-
エクセル VBA 時系列に横一列に...
-
エクセルVBAで他のbookのセ...
-
複数シートの複数列に入力され...
-
Unionでの他のシートの参照につ...
-
excel vbaのエラー原因について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELのSheet番号って変更でき...
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
VBA 空白行に転記する
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
【VBA】データを各シートに自動...
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
VBA 別ブックからの転記の高速...
-
Excel VBA オートフィルターで...
-
【VBA】特定の条件でセルをコピー
-
VBAでEXCELから固定長...
-
Excel2013で切り取り禁止
-
Unionでの他のシートの参照につ...
-
楽天RSSからエクセルVBAを使用...
-
100万件越えCSVから条件を満た...
-
ExcelのVBマクロを、バックグラ...
-
VBA 実行時エラー1004 rangeメ...
-
同じ作業(データコピー・貼付...
おすすめ情報