Клонируйте существующий набор записей в набор записей Excel
-
12-09-2019 - |
Вопрос
У меня есть набор записей, который содержит все данные, необходимые для импорта в файл 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 Each
через исходный набор записей, AddNew
в пункте назначения назначьте каждое поле от источника к пункту назначения и 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
синтаксис , описанный в эта статья Базы знаний