Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Отправка из Access в Excel  [new]
Monco
Guest
Подскажите пожалуйста, каким образом можно по нажатию кнопки из формы отправить таблицу, запрос в эскелевский файл? Желательно, чтоб перед отправкой Access спрашивал называние создаваемого файла.
Спасибо.
3 май 05, 11:13    [1512556]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Daf
Member

Откуда: Москва
Сообщений: 1916
У нас на форуме работет поиск.
Вы не первый кто задает такой вопрос.
3 май 05, 11:15    [1512564]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
Вот тебе простенький вариант.

Private Sub cmdButton_Click()
    Dim strXlsName As String
    
    strXlsName = InputBox("Input filename", , "Book1")
    
    DoCmd.OutputTo acOutputQuery, "qry1", _
      acFormatXLS, "D:\1\" & strXlsName & ".xls", False
End Sub
3 май 05, 11:48    [1512695]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Monco
Guest
Спасибо!
А вот еще одна загвоздка, мне нужно эскпортировать таблицу, запрос в определенный лист в указанном файле, при это эсксэс бы запрашивал название листа.
3 май 05, 12:00    [1512758]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
А ты точно знаешь название листа?
3 май 05, 12:17    [1512830]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Monco
Guest
Название листа он должен спрашивать у меня.
3 май 05, 12:26    [1512864]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
Monco
Название листа он должен спрашивать у меня.

https://www.sql.ru/forum/actualthread.aspx?bid=4&tid=110413&hl=excel+workbook

имеем список листов из конкретного xls файла

P.S.поиск работает
3 май 05, 12:34    [1512889]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
Вот тебе посложнее вариант:

Private Const conQuery = "qry1"

Private Sub cmdButton_Click()
    Dim rst As ADODB.Recordset
    Dim strSheetName As String

    ' Определяем Excel'евские объекты.
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    
    ' Создаем объект приложения Excel.
    Set xlApp = New Excel.Application
    
    ' Открываем файл.
    Set xlBook = xlApp.Workbooks.Open("D:\1\Book1.xls")
    
    ' Отображаем Excel, чтобы можно было посмотреть названия листов.
    xlApp.Visible = True
    
    ' Активируем Access.
    AppActivate "Microsoft Access"

    ' Запрашиваем название листа.
    strSheetName = InputBox("Input sheet name")
    
    ' Ссылка на наш лист.
    Set xlSheet = xlBook.Worksheets(strSheetName)
    
    ' Создаем рекордсет.
    Set rst = New ADODB.Recordset
    rst.Open _
     Source:=conQuery, _
     ActiveConnection:=CurrentProject.Connection
    
    With xlSheet
        ' Копируем названия полей.
        With .Cells(1, 1)
            .Value = rst.Fields(0).Name
            .Font.Bold = True
        End With
        With .Cells(1, 2)
            .Value = rst.Fields(1).Name
            .Font.Bold = True
        End With
        With .Cells(1, 3)
            .Value = rst.Fields(2).Name
            .Font.Bold = True
        End With
    
        ' Копируем все данные из рекордсета.
        .Range("A2").CopyFromRecordset rst
    End With

    rst.Close
    Set rst = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

Не забудь подключить ссылку "Microsoft Excel Object Library".
3 май 05, 12:38    [1512909]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Monco
Guest
Огромное спасибо!
3 май 05, 12:59    [1512989]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Пользователь2
И вот на этой строке "strSheetName = InputBox("Input sheet name")" я нажму отмена.

P.S. Просто настроение такое сегодня :)
3 май 05, 13:01    [1513000]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
Будет ошибка:

9: Subscript out of range

Есть два варианта:

1. Обработчик ошибок.

    On Error GoTo HandleErr

ExitHere:
    On Error Resume Next
    rst.Close
    xlBook.Close
    Set rst = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    Exit Sub
    
HandleErr:
    Select Case Err.Number
        Case 9
            MsgBox "У вас такое настроение!"
        Case Else
            MsgBox Err.Number & ": " & Err.Description
    End Select
    Resume ExitHere

2. Обработка нажатия Cancel InputBoxа.

    strSheetName = InputBox("Input sheet name")
    If StrPtr(strSheetName) = 0 Then
        MsgBox "У вас такое настроение!"
        GoTo ExitHere
    End If
3 май 05, 14:55    [1513482]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Пользователь2
"Будет ошибка:" - ух ты:)

Второй вариант всегда предпочтительнее, только без сообщения, равно как
xlSheet надо на Nothing проверять - вдруг я какую ересь напишу?:)

Это так, оффтопик, просто практика заствляет каждый чих пользователя проверять:)
3 май 05, 15:32    [1513610]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
Hummer

"Будет ошибка:" - ух ты:)


Вдруг ты не в курсе. :))

Hummer

Это так, оффтопик, просто практика заствляет каждый чих пользователя проверять:)


Себя лучше проверяй.
3 май 05, 15:43    [1513671]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Пользователь2
Фраза про пользователей относилась к пользователям моего ПО - т.е. любой чих пользователя в моих программах. Так что себя и проверяю постоянно - наезда не понял:)
3 май 05, 15:47    [1513685]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Iskander68
Member

Откуда: Королев М.О.
Сообщений: 877

Почему "второй вариант всегда предпочтительнее"? И там, и там код
сваливается в обработчик ошибок.

--
Regards
Alexander Artamonov


"Hummer" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1513610@sql.ru...
2 Пользователь2
"Будет ошибка:" - ух ты:)

Второй вариант всегда предпочтительнее, только без сообщения, равно как
xlSheet надо на Nothing проверять - вдруг я какую ересь напишу?:)

Это так, оффтопик, просто практика заствляет каждый чих пользователя
проверять:)
Тема Ответить

Posted via ActualForum NNTP Server 1.1

3 май 05, 15:49    [1513695]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Пользователь2
Guest
Hummer, блин, извини. :)

Ник у меня такой. :))
3 май 05, 15:56    [1513724]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Iskander68
Потому что быстрее и проще, когда вы точно знаете, что при каких-то действиях объект будет Nothing (к примеру), сразу это проверить и выдать сообщение, чем использовать Try Catch (в .Net) и выдавать там ошибку, зачастую непонятную пользователю или перечислять там все возможные номера ошибок и выдавать более осмысленное сообщение (всё только моё мнение, каждый волен поступать так, как ему нравится, просто об обработке ошибок забывать не следует).
3 май 05, 15:57    [1513727]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Пользователь2
Да я понял сразу (касаемо ника) - вообще не обижаюсь:)

2 Iskander68
Довесок - тут код не сваливается в обработчик ошибок общий для функции, а идёт на указатель обнуления переменных
ExitHere:
    On Error Resume Next
    rst.Close
    xlBook.Close
    Set rst = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    Exit Sub
- см. на Exit Sub.
3 май 05, 16:00    [1513739]     Ответить | Цитировать Сообщить модератору
 Re: Отправка из Access в Excel  [new]
Iskander68
Member

Откуда: Королев М.О.
Сообщений: 877

OK.

--
Regards
Alexander Artamonov


"Hummer" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1513727@sql.ru...
2 Iskander68
Потому что быстрее и проще, когда вы точно знаете, что при каких-то
действиях объект будет Nothing (к примеру), сразу это проверить и выдать
сообщение, чем использовать Try Catch (в .Net) и выдавать там ошибку,
зачастую непонятную пользователю или перечислять там все возможные номера
ошибок и выдавать более осмысленное сообщение (всё только моё мнение, каждый
волен поступать так, как ему нравится, просто об обработке ошибок забывать
не следует).
Тема Ответить

Posted via ActualForum NNTP Server 1.1

3 май 05, 16:02    [1513749]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить