我有2個excel工作簿,並且正在將數據(A1:C5)從一個(WB1)拉到另一個,而不使用下面的宏打開源WB。我需要在將數據粘貼到目標工作簿之前過濾數據。 該過濾器是刪除列「C」中的任何記錄=「否」 我該怎麼做? 下面是我使用的代碼:在「記錄集」中返回特定記錄(行和列)的VBA代碼
Sub TransferData___()
Dim sourceFile As Variant
sourceFile = "C:\WB1.xlsx"
GetData sourceFile, "Sheet1", "A1:C5", Sheets("Sheet1").Range("A1")
End Sub
Public Sub GetData(sourceFile As Variant, SourceSheet As String, _
SourceRange As String, TargetRange As Range)
Dim rsCon As Object
Dim rsData As Object
Dim szConnect As String
Dim szSQL As String
Dim lCount As Long
' Create the connection string.
If Val(Application.Version) < 12 Then
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sourceFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"";"
Else
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & sourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No"";"
End If
szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];"
Set rsCon = CreateObject("ADODB.Connection")
Set rsData = CreateObject("ADODB.Recordset")
rsCon.Open szConnect 'here the file is opened in the background
rsData.Open szSQL, rsCon, 0, 1, 1 'read data
TargetRange.Cells(1, 1).CopyFromRecordset rsData
' Clean up our Recordset object.
rsData.Close
Set rsData = Nothing
rsCon.Close
Set rsCon = Nothing
Exit Sub
End Sub
它是一個記錄集,還是「記錄集」? –
都是一樣的嗎? –
你爲什麼把它放在引號中?這表明它不是一個真正的記錄集。無論如何,你將需要顯示一點努力(最好是你現有的一些代碼),否則你的問題可能會被關閉。你谷歌的ADO記錄集的屬性? 'AbsolutePosition'似乎是一個很好的候選人。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –