2

VBA を介して分析するために、1 か月分の CSV ファイルを Excel に読み込む必要があります。月の各日は、日付名 (YYYYMMDD) を持つ個別のファイルです。

現在、A と B という 2 つの異なる状況で作成された 2 つのファイルを読み込むことができます。

With ActiveSheet.QueryTables.Add(Connection:=Full_F_Name_A, _
                                 Destination:=Range("$H$4"))

ループを使用して A と B (および目的地) を変更します。日付をインクリメントする方法がわかりませんでした。入力ボックスを使用して、その月の最初のファイルの日付を取得します。

F_Name = InputBox("Enter name of first data file eg YYYYMMDD, target=H4, EG4")

私が立ち往生しているので、どんな助けも素晴らしいでしょう...そして初心者です。

OK OK、下の VBA コードを参照してください。実行時エラー '3001' を受け取りました 引数の型が正しくないか、許容範囲外であるか、互いに競合しています。デバッガーは「.cursorlocation = aduseclient」行を指します。おそらく、私の PC にインストールされていないソフトウェアがあるのでしょう。ADO Web サイトのイントロ ビデオはもう存在しないため、イントロは表示されませんでした。さらなるアドバイスを待っている間、ファイルを開いてExcelにダンプするという、私が知っている別の方法を試してみます.

Sub Month_wdata_import()

Set cN = CreateObject("ADODB.Connection")
Set rS = CreateObject("ADODB.Recordset")

Dim sDate As String
Dim sDataPath As String
Dim i As Integer
Dim  mMax As Integer

sDataPath = Worksheets("D&L").Cells(1, "G").Value ' values located in 2nd sheet of workbook
mMax = Worksheets("D&L").Cells(1, "D").Value  'values located in 2nd sheet of workbook

For i = 1 To mMax
    sDate = "A_" + CStr(Worksheets("D&L").Cells(1 + i, "A").Value) ' looping through list of dates in sheet

    With cN
     .cursorlocation = aduseclient
     .CursorType = adopenstatic
     .LockType = adLockreadonly

       .Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & sDataPath & ";" & _
       "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""")
    End With

    With rS
      .ActiveConnection = cN
      .Source = "select * from data_" & sDate & "_.csv"
      .Open
    End With

Next

Range("A1").CopyFromRecordset rS

End Sub
4

2 に答える 2

0

ADODBODBC Text File Driver / Jet 4.0を使用してデータをレコードセットに取得し、それらをワークシートにダンプすることを検討しましたか?

dim cN as new adodb.connection
dim rS as new adodb.recordset
dim sDate as string
dim sDataPath as string

sDataPath="C:\Data"
sdate=date ' maybe loop through date arrary, or list of dates in sheet?

with cN
    .CursorLocation = 3 ' adUseClient 
    .CursorType = 3 ' adopenstatic
    .LockType = 1 ' adLockReadOnly         
    .Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & sDataPath & ";" & _
           "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""")
end with 

with RS
    .ActiveConnection = cN
    .Source = "select * from data_" & sdate & "_.csv"
    .open
end with

range("A1").copyfromrecordset rs

したがって、変数で定義されたパスに csv ファイルを配置しsDataPath、日付変数を設定してsDate(おそらくループ内で)、テストを開始してください!

このタイプの pf 手法の詳細については、Scripting Clinic による元の MSDN 記事 (古き良き時代) を参照してください。

MSDN: テキスト ファイルに関する多くの ADO

さらに、Google を使用して、ネット上で非常に多くの情報を得ることができます :)

于 2013-09-10T08:50:19.653 に答える