2つのExcelワークブックがあり、以下のマクロを使用してソースWBを開かずに、データ(A1:C5)を別のもの(WB1)私はそれがターゲットブックに貼り付ける前に、レコードセット内のデータをフィルタ処理する必要があります。 フィルタは、列 "C"のレコード= "いいえ"を削除するものです どうすればいいですか?それはちょうどあなたのselect文に不要なレコードを除外するために、より一般的なのです"レコードセット"内の特定のレコード(行と列)を返す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レコードセットのプロパティをgoogleしましたか? 'AbsolutePosition'は良い候補のようです。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –