2017-10-13 43 views
0

我有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 
+0

它是一個記錄集,還是「記錄集」? –

+0

都是一樣的嗎? –

+0

你爲什麼把它放在引號中?這表明它不是一個真正的記錄集。無論如何,你將需要顯示一點努力(最好是你現有的一些代碼),否則你的問題可能會被關閉。你谷歌的ADO記錄集的屬性? 'AbsolutePosition'似乎是一個很好的候選人。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –

回答

0

這是比較典型的,只是排除在你的SELECT語句中不需要的記錄:

szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "] where F3<>'No'" 

F1,F2,F3等都是默認的字段名稱,如果被查詢的數據沒有標題行。

+0

非常感謝蒂姆! –

+0

提姆:我有問題,不僅刪除「否」的記錄,而且保留數字記錄時全部字符串記錄。這甚至在合併你的代碼之前就發生了我該如何解決它? 注意:似乎字段類型被視爲一個數字,因此不考慮所有字符串記錄。添加什麼代碼來將字段類型更改爲字符串? 我應該添加這個作爲一個新的問題? –

+0

我會開始一個新的問題,因爲這是一個不同的問題。再次分享代碼,包含一些示例數據或者與數據共享文件以便人們可以重現您的問題會很有用。 –