MyTetra Share
Делитесь знаниями!
CopyFromRecordset
19.07.2018
19:24
Текстовые метки: Recordset
Раздел: VBA - Access - Access->Excell

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


Visual BasicВыделить код

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22



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




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


Visual BasicВыделить код

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30



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

   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 (номер файла) объявляем на уровне модуля


Visual BasicВыделить код

1



Private intBoockNo As Integer


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