[英]How do I select a variable with a space in the name using VBA from a CSV file via ADO?
[英]SELECT * INTO Access FROM csv ; running VBA ADO from Excel
upd.:這是最終解決問題的語法: 'createSQL = "SELECT * INTO newlyСreatedTableName FROM [fileName.csv] IN 'folderPath' [""Text;HDR=YES;FMT=Delimited""]"
在數據傳輸上苦苦掙扎。 我有一個 600 萬行的.csv 並嘗試將其導入到 Excel 中的 Access DB 運行代碼。 我有一個簡單的代碼。
Function getAccCN(ByVal dbFullPath As String) As Object
Set getAccCN = CreateObject("ADODB.Connection")
getAccCN.connectionString="Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & dbFullPath
End Function
Function createSQL() As String
createSQL = "Select * INTO [" & _
fileName & "] FROM [Data source = " & _
repFile.ParentFolder.Path & _
"\; Extended Properties=""Text;HDR=Yes;FMT=Delimited""]." & _
repFile.Name ' repFile is a *.csv as "Scripting.FileSystemObject"
Debug.Print createSQL ' returns following:
' Select * INTO [Classification] FROM [Data source = \\av-fs01.av.local\profiles$\...\Project IQVIA\; Extended Properties="Text;HDR=Yes;FMT=Delimited"].Classification.csv
' *.accdb and the table name and *.csv have the same base name - "Classification"
End Function
Function uploadCSV() as Boolean
Dim CN as Object
Set CN = getAccCN(repFile.ParentFolder.Path & "\" & baseFileName & ".accdb")
CN.Open
CN.Execute createSQL() ' this creates Error
Exit Function
ErrHandler:
Debug.Print Err.Number ' = -2147467259 "Wrong argument."
'CN.ERROR - Arguments are of the wrong type, out of range, or conflict with each other.
End Function
源的標題和第一行。
所以,我不知道如何解決這個問題。 我將非常感謝任何幫助。
由於問題是一次要導入的行數,我建議使用 Power Query 導入並在其中執行所需的工作(Power Query 就是為此而設計的)。 之后,將這 600 萬行分成 6 個查詢,每個查詢可以導入到 Excel 或作為導出到另一個應用程序的基礎。 我在這里做了一個測試,它成功了:我創建了一個包含 6M 行的 CSV 文件,其中包含文本“這是一個 6M 行文件,這是行 (lngPtr)”。 導入 Power Query 后,我將單列拆分為 4 個其他列,最后應用 Table.Split,根據下面的 M 腳本將表分成 6 個(每個 1M 行)(要修改的示例):
let
Font = Csv.Document(File.Contents("C:\temp\6MRows.CSV"),[Delimiter=",", Columns=1, Encoding=1252]),
#"Split Table" =Table.Split(Font,1000000)
in
#"Split Table"
拆分CSV文件后,PQ中會出現6個“表”。 然后將它們添加到 6 個新查詢中。 在不到 20 分鍾的時間內,CSV 進入 PQ(Excel365、Win10Pro、I7/16Gb)
請試試這個和反饋。
Sub csv_Import()
Dim wsheet As Worksheet, file_mrf As String
Set wsheet = ActiveWorkbook.Sheets("Single")
file_mrf = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Provide Text or CSV File:")
With wsheet.QueryTables.Add(Connection:="TEXT;" & file_mrf, Destination:=wsheet.Range("B2"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
End Sub
這是解決問題的語法:
'createSQL = _
"SELECT * INTO newlyСreatedTableName" & _
" FROM [fileName.csv] IN 'folderPath' [""Text;HDR=YES;FMT=Delimited""]"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.