VBAの優れたエキスパートではありませんが、Excelマクロをエキスパートしていますが、データベースに存在するSQLマクロを実行する必要があります。 SQL定義内のこのマクロは、いくつかの 'echo'操作(最初は の4 'echo'、最後は2 'echo')を実行し、SQLマクロは18個の列を取得します。 検索の 'エコー'を削除するとパフォーマンスは向上しますが、このマクロはシステムによって自動的に作成されるため、SQLコードで 'echo'を維持する必要があります。VBAでADOレコードセットを使用して「エコー」プリントを取得しないようにする
'If the recordset is empty
If (rs.EOF And rs.BOF) Then
iReply = MsgBox(Prompt:="No data retrieved", _
Buttons:=vbOKOnly, Title:="Error")
Else 'If the recordset contains data
rs.MoveFirst
Row = 2
Do While (rs.EOF = False And rs.BOF = False)
p = rs.GetRows
Sheet2.Range("A" & Row).Value = p(0, 0)
Sheet2.Range("B" & Row).Value = p(1, 0)
Sheet2.Range("C" & Row).Value = p(2, 0)
Sheet2.Range("D" & Row).Value = p(3, 0)
Sheet2.Range("E" & Row).Value = p(4, 0)
Sheet2.Range("F" & Row).Value = p(5, 0)
Sheet2.Range("G" & Row).Value = p(6, 0)
Sheet2.Range("H" & Row).Value = p(7, 0)
Sheet2.Range("I" & Row).Value = p(8, 0)
Sheet2.Range("J" & Row).Value = p(9, 0)
Sheet2.Range("K" & Row).Value = p(10, 0)
Sheet2.Range("L" & Row).Value = p(11, 0)
Sheet2.Range("M" & Row).Value = p(12, 0)
Sheet2.Range("N" & Row).Value = p(13, 0)
Sheet2.Range("O" & Row).Value = p(14, 0)
Sheet2.Range("P" & Row).Value = p(15, 0)
Sheet2.Range("Q" & Row).Value = p(16, 0)
Sheet2.Range("R" & Row).Value = p(17, 0)
Row = Row + 1
Loop
End If
事実は「エコー」SQLマクロ内でのみ最初の「エコー」は検索され、私のExcelシートに印刷されたということです: は、次のように私は、ADOレコードセットを使用し、私の外部ソースからデータを取得するには最初の列では、それ以外のものは取得しません。他の「エコー」も、18列のデータも取得できません。 MoveNextとMoveメソッドを5番目の位置に移動しようとしましたが(最初の18列のデータに対応するので、5番目の位置は最初に4 'エコーがあります)、動作しませんでした。 ( 2番目の位置に移動しても機能しないので、私は自分のレコードセットに最初の「エコー」に対応するエントリが1つしかないと判断し、レコードセットはそのEOFに達してループを終了します。 SQLマクロによって生成さ「エコー」の検索を避ける私のコードの変更は?
は、事前にありがとう
事実も、コードのあなたの部分でRSのみ、最初の「エコー」印刷して、他には何が含まれていることです...あなたの助けにダグありがとう、それはうまくいきませんでした... Iそれを調整しようとしましたが(今のところ)成功なし...:D – brokenp87