Установка печати для листа Excel

Программирование на Visual Basic for Applications
Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Установка печати для листа Excel

Сообщение Чудик » 10.01.2005 (Пн) 15:46

Код: Выделить всё
Private Sub cmdPrint_Click()
Dim MyPrint As Excel.Application
Set MyPrint = New Excel.Application
    With MyPrint
        .Workbooks.Open ("E:\Proba.xls")
   
        .Worksheets(1).PageSetup.PaperSize = xlPaperA4
       
        .Worksheets(1).PageSetup.FitToPagesWide = 1
        .Worksheets(1).PageSetup.FitToPagesTall = 1
       
        .Worksheets(1).PageSetup.Orientation = xlLandscape
               
        .Visible = True
        '.Worksheets(1).PrintPreview
        .Workbooks(1).PrintOut Copies:=1, Preview:=True, Collate:=True
        .Visible = False
   
        .DisplayAlerts = False
        .Quit
    End With
    Set MyPrint = Nothing
    Unload Me
End Sub

Здесь почему-то игнорируются все настройки листа для печати, т.е. не ставится xlLandscape, FitToPages и т.д. В чем заморочка?
Век живи - век учись!
www.detal-plast.narod.ru

SergeySV2
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.01.2005 (Чт) 22:06

Сообщение SergeySV2 » 10.01.2005 (Пн) 19:49

Не нравится мне конструкция

Set MyPrint = New Excel.Application
    With MyPrint
.....

Ну MyPrint.Workbooks.Open ("E:\Proba.xls") это понятно, без объекта Application тут не обойтись, а вот дальше что за чудеса происходят? :shock: .Worksheets(1) же входит в коллекцию твоего открытого Workbooks, а не MyPrint(Application), должно идти так:

Set MyPrint = New Excel.Application
Set wrBook = MyPrint.Workbooks.Open ("E:\Proba.xls")
ну а дальше уже можно и через with, только with будет объекта wrBook

With wrBook
.Worksheets(1).PageSetup.PaperSize = xlPaperA4    
  .Worksheets(1).PageSetup.FitToPagesWide = 1
  .Worksheets(1).PageSetup.FitToPagesTall = 1

и т.д.

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Установка печати для листа Excel

Сообщение Чудик » 10.01.2005 (Пн) 21:21

Код: Выделить всё
Private Sub cmdPrint_Click()
Dim MyPrint As Excel.Application
Set MyPrint = New Excel.Application
Set wrBook = MyPrint.Workbooks.Open("E:\Proba.xls")
    With wrBook
        .Worksheets(1).PageSetup.PaperSize = xlPaperA4
       
        .Worksheets(1).PageSetup.FitToPagesWide = 1
        .Worksheets(1).PageSetup.FitToPagesTall = 1
       
        .Worksheets(1).PageSetup.Orientation = xlLandscape
               
        .Worksheets(1).Visible = True
        .Worksheets(1).PrintPreview
        'Worksheets(1).Workbooks(1).PrintOut 'Copies:=1, Preview:=True, Collate:=True
        .Worksheets(1).Visible = False
   
        MyPrint.DisplayAlerts = False
        MyPrint.Quit
    End With
    Set MyPrint = Nothing
    Unload Me
End Sub

Почему-то .Worksheets(1).Visible = True не срабатывает (хотя ошибку не выдает) и, соответсвенно, на следующей строке зависает. Где опять сморозил?

P.S. Про коллекции логично, хотя до сих пор и так все неплохо работало, пока с печатью не связался.
Век живи - век учись!
www.detal-plast.narod.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 12.01.2005 (Ср) 11:35

Я вот только не пойму, почему
Код: Выделить всё
Worksheets(1)


А не просто

Код: Выделить всё
Worksheets


У тебя что масив???, зачем там индекс?, может поетому и игнорируеться!!

SergeySV2
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.01.2005 (Чт) 22:06

Сообщение SergeySV2 » 12.01.2005 (Ср) 12:07

Ramzes писал(а):Я вот только не пойму, почему
Код: Выделить всё
Worksheets(1)


А не просто

Код: Выделить всё
Worksheets


У тебя что масив???, зачем там индекс?, может поетому и игнорируеться!!


Ramzes, ты что :shock: это же коллекция

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 12.01.2005 (Ср) 12:57

:oops:


Но "(1)" все равно надо поробовать убрать, у меня работает!

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 12.01.2005 (Ср) 13:04

Да, но почему код не работает?
Век живи - век учись!
www.detal-plast.narod.ru

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 12.01.2005 (Ср) 13:18

Ramzes писал(а)::
Но "(1)" все равно надо поробовать убрать, у меня работает!


А на что у тебя референс стоит на Excel 5, 10 или 11? Может в этом проблема?
Век живи - век учись!
www.detal-plast.narod.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 12.01.2005 (Ср) 13:27

9.0

SergeySV2
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.01.2005 (Чт) 22:06

Сообщение SergeySV2 » 12.01.2005 (Ср) 14:46

Чудик писал(а):Да, но почему код не работает?


Если ты про WorkSheets(1).Visible, то ты перепутал Visible объекта Application и объекта worksheet. У объекта Worksheet свойство Visible принимает значения констант - xlSheetHidden, xlSheetVeryHidden, xlSheetVisible .... вообщем, посмотри справку

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Установка печати для листа Excel

Сообщение Чудик » 12.01.2005 (Ср) 19:11

Код: Выделить всё
Private Sub cmdPrint_Click()
Dim MyPrint As Excel.Application
Set MyPrint = New Excel.Application
Set wrBook = MyPrint.Workbooks.Open("E:\Proba.xls")

    With wrBook
        .Worksheets(1).PageSetup.PaperSize = xlPaperA4
       
        .Worksheets(1).PageSetup.FitToPagesWide = 1
        .Worksheets(1).PageSetup.FitToPagesTall = 1
       
        .Worksheets(1).PageSetup.Orientation = xlLandscape
               
        .Application.Visible = True
        .Worksheets(1).Activate
        .Worksheets(1).PrintPreview
        .Application.Visible = False
   
        MyPrint.DisplayAlerts = False
        MyPrint.Quit
    End With
    Set MyPrint = Nothing
    Unload Me
End Sub


Вот, так все заработало ....
Век живи - век учись!
www.detal-plast.narod.ru


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 53

    TopList