多くのcsvファイルから特定の日付範囲を統合しようとしています。私がしたいのは、この範囲を選択して別のワークブックのマスターシートに貼り付けることです。 .csvファイルはすべて1つのフォルダに配置され、すべて同じフォーマットで1枚あります。範囲は動的であるため、このコードでは、セルの下にあるすべての行を選択したり、より大きな範囲から空白行を削除できるようにする必要があります。助けていただければ幸いです。.csvデータを統合するためのVBAコード
ありがとうございました
多くのcsvファイルから特定の日付範囲を統合しようとしています。私がしたいのは、この範囲を選択して別のワークブックのマスターシートに貼り付けることです。 .csvファイルはすべて1つのフォルダに配置され、すべて同じフォーマットで1枚あります。範囲は動的であるため、このコードでは、セルの下にあるすべての行を選択したり、より大きな範囲から空白行を削除できるようにする必要があります。助けていただければ幸いです。.csvデータを統合するためのVBAコード
ありがとうございました
私は過去にこのようなものにバッチファイルを使用しました。バッチファイルが再度実行された場合、このコードはAggregate.csvの削除を処理しません。
@ECHO OFF
Set loc=C:\Test\
Copy %loc%*.csv %loc%\Aggregate.csv
Excelでは、VBAを使用してすべてのヘッダー行とフィルタ日付範囲を削除できます。 VBAのShellメソッドを使用して、コピーで集約することもできます。
編集: ます。また、日付範囲を使用して、MicrosoftテキストドライバーでAggregate.csvを照会するために、その他のデータソース> MSクエリのデータソースを作成することができる、など
いくつかのポインタソリューションについては移動する方法:
最初に、FileSystemObjectを使用してファイルを列挙します。
Set fso = CreateObject("Scripting.FileSystemObject")
set fld = fso.GetFolder("path\to\my\folder")
For Each file in fld.Files
If file.Name Like "*.csv" Then LoadFile file.Name
Next
Object
としてfso
、fld
、file
を宣言します。 LoadFile
は、1つのファイルを処理する書き込み関数です。次のようになります。
Sub LoadFile(filename as String)
dim buffer() as variant
dim wb as workbook, ws as worksheet
dim i as Long, beginrow as long, endrow as long
Set wb = Workbooks.Open(filename)
Set ws = wb.Worksheets(1) ' .csv always has 1 worksheet
buffer = ws.Range("A1:A10000") ' put a sensible upper bound here
for i = 1 to 10000
' replace (..first..) and (..last..) with your search interval
if buffer(i, 1) <= (..first..) Then beginrow = i
if buffer(i, 1) < (..last..) Then endrow=i
next
' now beginrow and endrow hold the interval to cut
ws.Cells(beginrow, 1).Resize(endrow-beginrow+1, column_count).Copy destination:=(... to be determined ..)
wb.Close
End Sub
この関数はファイルを開きます。最初の列を検索してコピーする間隔を探します。セルをコピーしてファイルを閉じます。
コードはそのままでは実行できませんが、適切なアイデアが得られるはずです。
1.データ►外部データの取得►テキストから自分自身を記録し、コードを調べて自動ループに切り替える方法を確認します。 2.問題に遭遇した場合は、元に戻って自分の質問を編集して自分の努力を含める。 – Jeeped