質問

Excel ファイルにインポートするために必要なすべてのデータを含むレコードセットがあります。Excel ファイルを開いたときに作成されたレコードセットにライブ レコードセットのクローンを作成する方法はありますか?

これが私が今試していることですが、運がありません。

Dim connection : Set connection = Server.CreateObject("ADODB.Connection")

connection.Open "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; 
                 Dbq=c:\MyExcel.xls;" & _
                "DefaultDir=c:\; ReadOnly=False;"
Dim excelRecordset : Set excelRecordset = Server.CreateObject("ADODB.Recordset")
excelRecordset.Open "[SHEET1$]", connection, 2, 3

excelRecordset.AddNew
Set excelRecordset = recordset.clone

excelRecordset.Update
excelRecordset.Close

ありがとう。

役に立ちましたか?

解決

あなたがこれを行うと: -

Set excelRecordset = recordset.clone

あなたは新しいレコードを参照して(そしてそれがクローズ)Excelスプレッドシート上で開かれたレコードセットへの参照を交換してください。この新しいレコードセットは、Excelスプレッドシートに接続され、とにかくではありません。

、先に、ソースレコードセットをFor EachAddNew元から宛先とUpdateに各フィールドを割り当てることができますが、本当に多くの選択肢を持っていないレコードセットを使用します。

他のヒント

エクセル Range オブジェクトには CopyFromRecordset その仕事を行うべきメソッド。作成できれば、 Excel.Application オブジェクトを選択して、書き込み先のワークブックを開くと、これを使用できるようになります。

したがって、既存のレコードセットに名前が付けられている場合、 rs すでに入力されている場合、VBA のコードは次のようになります。

Worksheets("SHEET1").Cells(2, 1).CopyFromRecordset rs

その後、反復処理を行うことができます rs.Fields フィールド名を入力するには

Dim fld As Field
Dim i As Integer
i = 1
With Worksheets("SHEET1")
    For Each fld in rs.Fields
        .Cells(1, i).Value = fld.Name
        i = i + 1
    Next fld
End With

ただし、それがあなたのシナリオにどれだけ簡単に反映されるかはわかりません。

または、使用しているドライバーで利用できる場合は、 SELECT INTO そして INSERT INTO で説明されている構文 このナレッジベースの記事

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top