Como posso importar um mês de arquivos csv (data nomeada) para o Excel via VBA?
Eu preciso carregar um mês de arquivos CSV no Excel para análise via VBA. Cada dia do mês é um arquivo separado com o nome da data (AAAAMMDD).
Atualmente, posso carregar dois arquivos criados por duas circunstâncias diferentes, A e B usando
With ActiveSheet.QueryTables.Add(Connection:=Full_F_Name_A, _
Destination:=Range("$H$4"))
Eu uso um loop para alterar A e B (e o destino). Eu não descobri como incrementar a data. Eu uso uma caixa de entrada para obter a data do primeiro arquivo no mês.
F_Name = InputBox("Enter name of first data file eg YYYYMMDD, target=H4, EG4")
Qualquer ajuda seria ótima como eu estou preso ... e um novato.
OK OK, veja o código VBA abaixo. Erro de tempo de execução recebido '3001' Os argumentos são do tipo errado, estão fora do intervalo aceitável ou estão em conflito um com o outro. O depurador aponta para a linha ".cursorlocation = aduseclient". Talvez haja algum software faltando no meu PC. O vídeo de introdução no site do ADO não existe mais, então eu não vi a introdução. Vou tentar a outra maneira que eu sei de apenas abrir os arquivos e colocá-los no excel enquanto aguardo mais conselhos.
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