Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 И снова экспорт из Access в Excel: с сохранением формата  [new]
Vadim A. Frolov
Member

Откуда: Россия, Воронеж
Сообщений: 3
Не пинайте сильно пожалуйста, я вообще не навароченный специалист в этом деле, сразу скажу, что поиск юзал довольно долго, но реального ответа так и не нашел.
Задача такая, необходимо перенести некоторые данные из Access в Excel, но не просто перенести, а так, что-бы это имело законченный вид. Вижу здесь два варианта.
Первый это импорт отчета в excel, но с сохранением полного формата, т.е. что вижу в отчете, то и вижу в excel (не катит, неужели microsoft это не предусмотрел, или я что-то где-то упустил?).
Второй это уже готовая форма в excel, в которую в нужные места вводятся данные из access, но как это сделать? Через макрос это возможно?
А может существует какая-нибудь сторонняя програмулинка, которая это делает красиво?
Отзовитесь плиззззз.
23 окт 06, 11:59    [3294664]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
через макрос можно всё (почти всё)
23 окт 06, 12:09    [3294763]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
Vadim A. Frolov
Member

Откуда: Россия, Воронеж
Сообщений: 3
Покопавшись тут и там я все-таки понял что нужно. Уважаемые господа шарящие в этом деле, прошу откликнуться. Нужно мне вот что: допустим у меня имеется экселевский шаблон, кнопка в форме, при нажатии этой кнопки у меня должна выполнится процедура на VBS (поправте если что, я в программировании не очень-то шарю), в этой процедуре должен сформироваться экселевский файл на основе имеющегося шаблона, с динамическим именем (ну то-есть, что-бы имя файла можно было формировать программно), в этот файл в определенные поля из например какого-нибудь запроса подставляются данные, файл закрывается и записывается в нужное место. Кроме того должна быть возможность не только подставлять данные в готовые ячейки экселевской таблицы, но и как-бы добовлять эти данные в новые ячейки ниже предыдущих (ну скажем что-бы не затереть текст расположенный ниже если этих данных окажется много). Есть ли у кого готовые наработки этой процедуры?
23 окт 06, 14:43    [3296325]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
Думаю, набрав в поиске Excel Application, вы получите достаточно примеров, чтобы слепить то, что вам нужно.
24 окт 06, 05:50    [3299362]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 738
Вот изощреное издевательство над группой ячеек:
описания

Dim wbkNew As Object, wksNew As Object
Dim rs As Recordset
Dim intCountObj As Long, Row As Long, total As Long
Dim appExcel As Object 'As Excel.Application
Dim strFileName As String

Set appExcel = CreateObject("Excel.Application")
 
 strFileName = NameFileExcel.Value
 If Not Dir(strFileName) = "" Then
 Set wbkNew = appExcel.Workbooks.Open(strFileName)
 Else: Set wbkNew = appExcel.Workbooks.Add
 End If

 appExcel.Visible = True
 Set wksNew = wbkNew.Sheets(2)
 wksNew.Activate
 
 wksNew.Cells(1, 5) = "НАЯВНІСТЬ"
 wksNew.Cells(2, 5) = Shapka
wksNew.Cells(3, 5) = "на Донецький залізниці"
wksNew.Cells(4, 5) = " станом на " & Daaataa
With wksNew.Range(wksNew.Cells(1, 5), _
    wksNew.Cells(4, 5))
    .HorizontalAlignment = xlCenter
    .Font.Size = .Font.Size + 2
    .Font.Bold = True
End With 'With MyObject

(текст программы, неважный в контексте)

With wksNew.Range(wksNew.Cells(6, 1), _
    wksNew.Cells(Row, ii))
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .NumberFormat = "@"
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeLeft).Weight = xlThin
    .Borders(xlEdgeLeft).ColorIndex = xlAutomatic

    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeTop).Weight = xlThin
    .Borders(xlEdgeTop).ColorIndex = xlAutomatic

    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).Weight = xlThin
    .Borders(xlEdgeBottom).ColorIndex = xlAutomatic

    .Borders(xlEdgeRight).LineStyle = xlContinuous
    .Borders(xlEdgeRight).Weight = xlThin
    .Borders(xlEdgeRight).ColorIndex = xlAutomatic

    .Borders(xlinsidevertical).LineStyle = xlContinuous
    .Borders(xlinsidevertical).Weight = xlThin
    .Borders(xlinsidevertical).ColorIndex = xlAutomatic

    .Borders(xlinsidehorizontal).LineStyle = xlContinuous
    .Borders(xlinsidehorizontal).Weight = xlThin

    .WrapText = True
End With
24 окт 06, 09:55    [3299860]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
MyCopyFromRecordset
Guest
вот откопал вариант вставки в лист рекордсета с сохранением (копированием)форматирования.
Sub MyCopyFromRecordset(rst As Recordset, sRange As String, xlWindow As Object)
On Error GoTo err_MyCopyFromRecordset
Dim i As Long
Dim xRange As Object
    If sRange = "" Then sRange = "A1"
    Set xRange = xlWindow.ActiveSheet.Range(sRange)

On Error Resume Next
    rst.MoveFirst
    If err <> 0 Then
        err = 0
        GoTo ex_MyCopyFromRecordset:
    End If
    Dim N As Long
    N = rst.Fields.Count
    Do While Not rst.EOF Or rst.BOF
        For i = 0 To N - 1
            If Left(rst.Fields(i) & "", 3) = "=R[" Or _
               Left(rst.Fields(i) & "", 4) = "=RC[" Then
                xRange.Formula = xlWindow.Application.ConvertFormula( _
            Formula:=rst.Fields(i), _
            fromReferenceStyle:=-4150, _
            toReferenceStyle:=1, _
            ToAbsolute:=4, RelativeTo:=xRange)
        'xlR1C1=-4150;xlA1 =1,xlRelative=4;xlAbsolute=1
            Else
                xRange.Formula = rst.Fields(i) '
            End If
            ' смещение в листе
            Set xRange = xRange.Offset(0, 1).Range("A1")
        Next i
        rst.MoveNext
        ' смещение в листе
        ' вставка в лист
        xRange.Offset(1, 0).EntireRow.Insert -4121
        Set xRange = xRange.Offset(1, -N).Range("A1")
        
    Loop
ex_MyCopyFromRecordset:
    Set xRange = Nothing
    Exit Sub
err_MyCopyFromRecordset:
    MsgBox Error
    Resume ex_MyCopyFromRecordset:
End Sub
24 окт 06, 12:29    [3301091]     Ответить | Цитировать Сообщить модератору
 Re: И снова экспорт из Access в Excel: с сохранением формата  [new]
Vadim A. Frolov
Member

Откуда: Россия, Воронеж
Сообщений: 3
>>>вот откопал вариант вставки в лист рекордсета с сохранением (копированием)форматирования.

Я вообще-то в VBA почти никакой. Этот вариант что делает? Копирует отчет в файл Excel в том виде, в котором его видишь на экране? И что передавать в качестве параметров процедуры?
26 окт 06, 10:42    [3312644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить