http://bbs.vbstreets.ru/viewtopic.php?t=22905 - здесь разбиралась тема, как сделать импорт данных из Excel.
Сейчас проблема обратная. Нужно данные из динамического набора
- Код: Выделить всё
Dim rs As ADODB.Recordset
Dim rs As ADODB.Recordset
'Создание заголовков
For i = 0 To rs.Fields.Count - 1: Cells(1, i + 1).Value = rs.Fields(i).Name: Next i
'Вставка рекордсета в новый лист
ActiveSheet.Range("A2").CopyFromRecordset rs
rs.Close
Private Sub mnuSaveRepXLS_Click()
On Error GoTo Er
Dim Cols As TrueOleDBGrid80.Columns
Set Cols = TDBGrid1.Columns
Dim i, c As Byte
Dim xla As New Excel.Application
Dim xlb As New Excel.Workbook
Dim xls As New Excel.Worksheet
Dim xlr As Excel.Range
MousePointer = vbHourglass
Set xlb = xla.Workbooks.Add
Set xls = xlb.Worksheets.Add
xls.Activate
For i = 0 To Cols.Count - 1
c = i + 1
'Задаем имя столбца
xls.Cells(1, c) = Cols.Item(i).DataField
Set xlr = xls.Cells(1, c)
'Выделяем верхнюю строку полужирным шрифтом
xlr.Select
xlr.Font.Bold = True
Next i
'Позицируем курсор на листе для вставки в нужное место
Set xlr = xls.Cells(1, 1)
'Для вставки всего динамического набора
TData1.Recordset.MoveFirst
'Вставка рекордсета в лист
xlr.Range("A2").CopyFromRecordset TData1.Recordset
TData1.Recordset.MoveFirst
MousePointer = vbDefault
'Диалог сохранения в файл
CommonDialog1.DefaultExt = "xls"
CommonDialog1.Filter = "Excel (*.xls)|*.xls"
CommonDialog1.FileName = ""
CommonDialog1.ShowSave
If Len(CommonDialog1.FileName) = 0 Then
Exit Sub
End If
'Сохранение в файл
MousePointer = vbHourglass
xls.SaveAs (CommonDialog1.FileName)
xlb.Saved = True
xla.Quit
MousePointer = vbDefault
Exit Sub
Er:
MousePointer = vbDefault
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub
Сейчас этот форум просматривают: AhrefsBot и гости: 98