Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / AutoFit / 5 сообщений из 5, страница 1 из 1
10.07.2017, 10:21
    #39485531
И-ван-Ыч
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AutoFit
Доброго времени суток всем!

Подскажите пожалуйста, как можно применить AutoFit при открытии файла Excel?

Файл Excel создаю из Access таким способом:
Код: vbnet
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.
31.
Private Sub knExpExcel_Click()
On Error GoTo Err_knExpExcel_Click

Dim obj As Object

On Error Resume Next
Kill ("D:\Base_dolgi\РеестрОплаты.xls")

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "zExpExcel2", "D:\Base_dolgi\РеестрОплаты.xls", True

Set obj = GetObject("D:\Base_dolgi\РеестрОплаты.xls")

With obj

.Application.Visible = True
.Parent.Windows(1).Visible = True
.Columns(2).Autofit  ' тут пытаюсь применить AutoFit
.Columns("A:D").EntireColumn.Autofit  ' и тут другим макаром пытаюсь применить Autofit

End With

Set obj = Nothing

Exit_knExpExcel_Click:
    Exit Sub

Err_knExpExcel_Click:
    MsgBox Err.Description
    Resume Exit_knExpExcel_Click
    
End Sub


Уже второй день форум штудирую, но что-то никак не хватает понимания, как это сделать. Никак не получается ширину столбцов увеличить автоматически (массу способов попробовал).

Вот так получается (модуль готовый взял, кажется на этом форуме, немного подогнал свои нужды):
Код: vbnet
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.
31.
32.
33.
34.
35.
Sub ToExcelFinal_2()
On Error GoTo Err_
Dim xlApp As Object, xlBook As Object, xlSheet As Object
Dim rsd As DAO.Recordset
Dim i As Byte

    Set xlApp = CreateObject("Excel.Application")
   
    xlApp.Visible = True
    Set xlBook = xlApp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets(1)
    
    Set rsd = CurrentDb.OpenRecordset("SELECT tFizlicaReestr.LS AS ЛС, tFizlicaReestr.FIO AS ФИО , tFizlicaReestr.Adres AS Адрес, Null AS Оплата" & _
                                     " FROM tFizlicaReestr INNER JOIN tRabotaReestr ON tFizlicaReestr.LS = tRabotaReestr.LS " & _
                                     " WHERE tRabotaReestr.DataDobavleniaGraf = #" & Format([Forms]![fExpExcel]![pData], "mm\/dd\/yyyy") & "# " & _
                                     " GROUP BY tFizlicaReestr.LS, tFizlicaReestr.FIO, tFizlicaReestr.Adres, Null " & _
                                     " ORDER BY tFizlicaReestr.LS", dbOpenSnapshot)
    For i = 0 To rsd.Fields.Count - 1
        xlSheet.Cells(1, i + 1) = rsd.Fields(i).Name
    Next i
    xlSheet.Range("A2").CopyFromRecordset rsd
    xlSheet.Columns(1).Autofit
    xlSheet.Columns(2).Autofit
    xlSheet.Columns(3).Autofit
    
    rsd.Close
     
    Set rsd = Nothing
    Set xlBook = Nothing
    Set xlSheet = Nothing
    Set xlApp = Nothing
        
Exit Sub
Err_:
End Sub


Но тут не знаю, как при установленном Exsel 2010 (или 2007) автоматически создать файл .xls (Excel 2003).
...
Рейтинг: 0 / 0
10.07.2017, 10:36
    #39485543
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AutoFit
И-ван-Ыч
Код: vbnet
1.
2.
3.
4.
5.
6.
With obj

.Application.Visible = True
.Parent.Windows(1).Visible = True
.Columns(2).Autofit  ' тут пытаюсь применить AutoFit
.Columns("A:D").EntireColumn.Autofit  ' и тут другим макаром пытаюсь применить Autofit


Объекта Workbook.Columns - не существует. И пытаться применять к нему AutoFit бессмысленно.
...
Рейтинг: 0 / 0
10.07.2017, 12:14
    #39485655
И-ван-Ыч
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AutoFit
Akina, спасибо огромнейшее! Без такой ценной подсказки ещё долго голову ломал бы.
По Вашей наводке подправил:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set obj = CreateObject("Excel.Application")

With obj

.Workbooks.Open "D:\Base_dolgi\РеестрОплаты.xls"
.Columns("A:D").EntireColumn.Autofit

.Visible = True

End With



..
Уж за полтинник перевалило, а я всё ещё неуч, тяжело программирование даётся :(
...
Рейтинг: 0 / 0
10.07.2017, 12:21
    #39485662
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AutoFit
Тоже некорректно. Всё равно неверно квалифицируете объект. Правильно будет так:
Код: vbnet
1.
2.
3.
4.
Set xlApp = CreateObject("Excel.Application")
Set xlWbk = xlApp.Workbooks.Open "D:\Base_dolgi\РеестрОплаты.xls"
xlWbk.Worksheets(1).Columns("A:D").EntireColumn.Autofit
xlApp.Visible = True
...
Рейтинг: 0 / 0
12.07.2017, 11:18
    #39487301
И-ван-Ыч
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AutoFit
Akina,
Спасибо , учту замечания в будущем.
Но и моя версия тоже работает правильно, хотя, может быть, это именно в данном конкретном случае.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / AutoFit / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]