【发布时间】:2019-06-25 13:50:02
【问题描述】:
我的代码如下。我将尝试使用连接字符串从已关闭的工作表中复制一系列数据。如果数据名没有空字符串,则代码是可以的。 例如test.xlsx 没问题,但进一步测试。xlsx 坏了。
'using sql
Sub ImportThisFile(FilePath As String, SourceSheet As String, Destination As Range)
Set Conn = New ADODB.Connection
'xls
'Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
' FilePath & ";Extended Properties=Excel 8.0;"
'xlsx
Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & _
FilePath & ";Extended Properties=Excel 12.0 Xml;"
Sql = "SELECT * FROM [" & SourceSheet & "$] WHERE [fieldname] <> " & [""""""]
Set RcdSet = New ADODB.Recordset
RcdSet.Open Sql, Conn, adOpenForwardOnly
Destination.CopyFromRecordset RcdSet
RcdSet.Close
Set RcdSet = Nothing
Conn.Close
Set Conn = Nothing
End Sub
Sub StartDoingStuff()
Dim Zeit As Long, Anzahl As Long
Anzahl = 1
Zeit = Timer
Dim testvar As String, testvar2 As String, testvar3 As String
testvar = "C:\Users\Admin\Desktop\Folder\"
testvar2 = "testdata with emptystrings.xlsx.xlsx"
testvar2 = "test.xlsx"
testvar3 = "Tabelle1"
ImportThisFile testvar & testvar2, "Timesheet", Range(testvar3 & "!A2")
Debug.Print "Zeitbedarf"; Round(Timer - Zeit, 3)
End Sub
第二个问题。 如果我想复制一个范围,我必须如何编写代码? 我需要确定列中的最后一个单元格。这怎么可能?
【问题讨论】:
-
试试
"SELECT * FROM ['" & SourceSheet & "'$] -
@DavidZemens 感谢输入。但问题不是 sql 查询,问题是数据名 (testvar2)
-
第二个 testvar2 = "test.xlsx" 注释为 ' 第一个 testvar 没有两个 .xlsx。这是一个写作错误
-
问题依然存在 :)
-
究竟是什么问题?你有错误吗?什么错误,哪一行引发了错误?
标签: excel vba connection-string