我拥有以下VBA代码,可以将许多文本文件导入Access表中。但是,在包含双引号的文本的.TXT文件的情况下存在问题,这会导致该记录的所有其他字段都带有空值。
我尝试在选择“产品”字段时放置一个替换函数,但双引号无法正常工作。对于其他字符可以正常工作,但是双引号不行...
您推荐做哪些调整?任何建议都将不胜感激。
*注意:实际数据超过100万条记录...
SCHEMA.INI [Test_temp.csv] ColNameHeader=false Format=Delimited(;) Col1="product" Text Col2="price" Double CSV文本文件:test01.txt TV SAMSUNG 21" WIDESCREEN LED;170 TV PHILIPS 27" WIDESCREEN LED;200 HD SEAGATE 1TB 7200RPM;150
VBA Access代码:
我尝试在选择“产品”字段时放置一个替换函数,但双引号无法正常工作。对于其他字符可以正常工作,但是双引号不行...
您推荐做哪些调整?任何建议都将不胜感激。
*注意:实际数据超过100万条记录...
SCHEMA.INI [Test_temp.csv] ColNameHeader=false Format=Delimited(;) Col1="product" Text Col2="price" Double CSV文本文件:test01.txt TV SAMSUNG 21" WIDESCREEN LED;170 TV PHILIPS 27" WIDESCREEN LED;200 HD SEAGATE 1TB 7200RPM;150
VBA Access代码:
Sub TableImport()
Dim strSQL As String
Dim db As DAO.Database
Dim strFolder As String
strFolder = CurrentProject.Path
Set db = CurrentDb
strSQL = "DELETE FROM tbTest"
db.Execute strSQL, dbFailOnError
Dim strFile As String
strFile = Dir(strFolder & "\test*.txt", vbNormal)
Do Until strFile = ""
FileCopy strFolder & "\" & strFile, strFolder & "\Test_temp.csv"
strSQL = ""
strSQL = " INSERT INTO tbTEST(product,price)"
strSQL = strSQL & " SELECT fncReplace(product),price"
strSQL = strSQL & " FROM [Text;HDR=no;FMT=Delimited;DATABASE=" & strFolder & "].Test_temp.csv"
db.Execute strSQL, dbFailOnError
strFile = Dir
Loop
db.Close
End Sub
Public Function fncReplace(varStr As Variant) As String
If IsNull(varStr) Then
fncReplace = ""
Else
fncReplace = Replace(Trim(varStr), """", "''")
End If
End Function
更新 - 它成功了 - 建议人:Andre451
Sub TableImport()
Dim strSQL As String
Dim db As DAO.Database
Dim strFolder As String
strFolder = CurrentProject.Path
Set db = CurrentDb
strSQL = "DELETE FROM tbTest"
db.Execute strSQL, dbFailOnError
Dim strFile As String
strFile = Dir(strFolder & "\test*.txt", vbNormal)
Do Until strFile = ""
FileCopy strFolder & "\" & strFile, strFolder & "\Test_temp.csv"
DoCmd.TransferText acLinkDelim, "specIMPORTAR", "linkData", strFolder & "\Test_temp.csv", False
strSQL = ""
strSQL = " INSERT INTO tbTEST(product,price)"
strSQL = strSQL & " SELECT product,price"
strSQL = strSQL & " FROM linkData"
db.Execute strSQL, dbFailOnError
strFile = Dir
DoCmd.DeleteObject acTable, "linkData"
Loop
db.Close
End Sub