Jak mogę zaimportować miesiąc plików csv (nazwanych dat) do programu Excel za pośrednictwem VBA?
Muszę załadować miesiąc plików CSV do programu Excel do analizy za pomocą VBA. Każdy dzień miesiąca jest oddzielnym plikiem z nazwą daty (RRRRMMDD).
Obecnie mogę załadować dwa pliki utworzone za pomocą dwóch różnych okoliczności, używając A i B.
With ActiveSheet.QueryTables.Add(Connection:=Full_F_Name_A, _
Destination:=Range("$H$4"))
Używam pętli, aby zmienić A i B (i miejsce docelowe). Nie wiem, jak zwiększyć datę. Używam pola wprowadzania, aby uzyskać datę pierwszego pliku w miesiącu.
F_Name = InputBox("Enter name of first data file eg YYYYMMDD, target=H4, EG4")
Każda pomoc byłaby świetna, ponieważ utknąłem ... i początkujący.
OK OK, zobacz poniższy kod VBA. Otrzymany błąd czasu wykonywania „3001” Argumenty są niewłaściwego typu, są poza dopuszczalnym zakresem lub są ze sobą w konflikcie. Debugger wskazuje linię „.cursorlocation = aduseclient”. Być może brakuje jakiegoś oprogramowania na moim komputerze. Film wprowadzający na stronie internetowej ADO już nie istnieje, więc nie widziałem wstępu. Spróbuję w inny sposób, jaki znam, po prostu otwierając pliki i wrzucając je do Excela, podczas gdy czekam na dalsze porady.
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