MyTetra Share
Делитесь знаниями!
Время создания: 16.03.2019 23:43
Текстовые метки: Recordset
Раздел: Разные закладки - VBA - Access - Access->Excel
Запись: xintrea/mytetra_db_adgaver_new/master/base/15320174764rfzicmd2s/text.html на raw.githubusercontent.com

CopyFromRecordset и, заменяя с помощью Val, текстовые значения на числа


Private Sub Кнопка2_Click()

 

Dim strsql, temp1, i, rst As DAO.Recordset

Dim oExcel As Object, oBook As Object, oSheet As Object

   'Start a new workbook in Excel

   Set oExcel = CreateObject("Excel.Application")

    Set oBook = oExcel.Workbooks.Add

   

    strsql = "select Код, Имя, [Кол-во], [Дата], " _

    & "val(Таблица1.Работа) as Работа, Адрес, " _

    & "val(Таблица1.[Семейное положение]) as [Семейное положение] " _

    & "from Таблица1"

    Set rst = CurrentDb.OpenRecordset(strsql)

    For i = 0 To rst.Fields.Count - 1

        oExcel.cells(1, i + 1) = rst.Fields(i).Name

    Next

    oExcel.cells(2, 1).copyfromrecordset rst

    'Save the Workbook and Quit Excel

   oBook.SaveAs "D:\Book1.xls"

    oExcel.Quit

    MsgBox "Готово"

End Sub





Ещё к обоим вариантам можно прикрутить такой код


'Выставляем ширину столбцов

   For c = 1 To 7

        Select Case c

            Case 1

                oExcel.Columns(c).ColumnWidth = 7

            Case 3, 4, 5

                oExcel.Columns(c).ColumnWidth = 12

            Case Else

                'oExcel.Columns(c).AutoFit

               oExcel.Columns(c).ColumnWidth = 24

        End Select

    Next c

   

'Задаём путь приложения

   intBoockNo = intBoockNo + 1

    i = CInt(Mid(Application.Version, 1, 2)) 'Версия MS Access

   If i > 11 Then 'Версия MS Access 2007 и выше (не 2003)

       s = CurrentProject.Path & "\Book" & Format(intBoockNo, "000") & ".xlsx"

    Else

        s = CurrentProject.Path & "\Book" & Format(intBoockNo, "000") & ".xls"

    End If

   

'Сохраняем в папке приложения

 

   oBook.SaveAs s

   oExcel.Visible = True

   'oExcel.Quit

 

 

    MsgBox "Готово", vbInformation



Причём: intBoockNo (номер файла) объявляем на уровне модуля


Private intBoockNo As Integer



 
MyTetra Share v.0.65
Яндекс индекс цитирования