Настройки печати в Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Настройки печати в Excel

Сообщение Чудик » 11.01.2005 (Вт) 22:05

А еще мучает тема, я ее распологал в стороне VBA, никто толком не ответил, может не там распологал? Взгляните (может еще раз), пожалуйста, может есть идеи? http://bbs.vbstreets.ru/viewtopic.php?t=12533
Век живи - век учись!
www.detal-plast.narod.ru

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

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

Я уже ответил. :?

Иди смотри.

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

Сообщение Чудик » 13.01.2005 (Чт) 13:15

Как продолжение темы:
В процедуре модуля пишу
Set MyPrint = New Excel.Application
Set wrBook = MyPrint.Workbooks.Open(App.Path & PrintFile)
Затем вызываю подпрограмму, где выполняется работа с wrBook. Выскакивает ошибка, что требуется объект.
Как можно разрешить такую ситуацию?
Век живи - век учись!
www.detal-plast.narod.ru

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

Сообщение Ramzes » 13.01.2005 (Чт) 13:44

Не уверен но попробовать стоит

Код: Выделить всё
Public Myxls As New Excel.Application

Private Sub Form_Load()
Set MyWB = Myxls.Workbooks.Open(App.Path & "\xls.xls")
End Sub

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

Сообщение Чудик » 13.01.2005 (Чт) 16:02

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

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.01.2005 (Чт) 16:10

весь код в студию, особенно, твою подпрограмму

Затем вызываю подпрограмму, где выполняется работа с wrBook. Выскакивает ошибка, что требуется объект.

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

Сообщение Ramzes » 13.01.2005 (Чт) 16:15

[quote="Konst_One"]весь код в студию, особенно, твою подпрограмму

Тоже правильно, или хотябы подробнее напиши, что делает "подпрограмма", зачем она вообще нужна, и т.д.

И вопрос конктретнее задай.

А то блин эти долбаные телепаты, все еще в отпуске

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

Настройки печати в Excel

Сообщение Чудик » 13.01.2005 (Чт) 19:41

Весь код - это много, так что выдрал только часть, надеюсь будет понятно. Суть такая, что данный код принадлежит форме типа окошка печати. В зависимости от окна, где работает пользователь, печатаются разные данные. В одном случае из книги excel, в двух других из FlexGrid, который сначала переводится тоже в excel при помощи BIFF, а потом идет на печать. Соответственно перед печатью делаем настройки по экселевски, но тут то и проблема.
Надеюсь на Вашу помощь.
Вложения
Public PrintFile As String.zip
(6.3 Кб) Скачиваний: 28
Век живи - век учись!
www.detal-plast.narod.ru

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 13.01.2005 (Чт) 20:10

Попробуй
Код: Выделить всё
Set MyWB = Myxls.Workbooks.Open(App.Path & "\xls.xls")
Set MyWB =MyWB.Application.ActiveWorkbook
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение Чудик » 13.01.2005 (Чт) 23:10

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

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

Сообщение Чудик » 14.01.2005 (Пт) 10:04

Значит это не реализуемо?
Век живи - век учись!
www.detal-plast.narod.ru

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

Сообщение Ramzes » 14.01.2005 (Пт) 10:56

А если в одной форме, взять лист обработать его затем сохранить, адрес записать в глобальную переменную типа стринг, а в другой форме наново открыть :roll:

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

Настройки печати в Excel

Сообщение Чудик » 14.01.2005 (Пт) 15:09

Exploit
Программа или просто хитрость, которая
позволяет обойти ошибку в программе.

Думаю, Ramzes, что в данном случае это как раз exploit. В принципе такой вариант не плох, но я предполагаю, что если открывать-закрывать файл не два раза, а уже три - это притормозит порядочно программу.
Я думал над вариантом объединения всех процедур в одну. Это будет менее читабельней, но на скорости отразится не должно.
Но я хотел бы обойти это не при помощи хитроумных телодвижений, а при помощи естественных действий в VB. Неужели подобная работа с объектными переменными не может быть глобальной?
Век живи - век учись!
www.detal-plast.narod.ru

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

Сообщение Ramzes » 14.01.2005 (Пт) 17:22

Ну тогда можно весь лист писать в какой то масив или переменную, но
это памяти займет, о мама дорогая. :roll:

И вообще где Алибек и Тёмыч, они бы бистро сказали что по чем и зачем :wink:

[off]
Давайте их все вместе позовем как дети снегурочку :lol:
[/off]

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2005 (Пт) 17:26

Алибек полчаса назад пошёл домой, Тёмыч не знаю где, так что обойдётесь без снегурочек :)

В чём трабла-то?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение Ramzes » 14.01.2005 (Пт) 17:31

САБЖ , с самого начала и до конца, одна сплошная трабла
Последний раз редактировалось Ramzes 14.01.2005 (Пт) 17:33, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2005 (Пт) 17:36

Мешаете мне хавать доширак :razz:

Чё-то я не врубаюсь - что за предыдущий вопрос, что сделано, чот не сделано :)
Поэтому прошу заполнить шаблон:
Я пытаюсь из [...] управлять экселем следующим образом: [...]. При этом не получается конкретная процедура: [...].

:)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.01.2005 (Пт) 17:38

что-то все как-то сумбурно описано, что нужно и какие проблемы.
в коде черт голову сломит и что там за объект такой ExcelFile - это твой com-объект или еще что?

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

Настройки печати в Excel

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

попробую высказать свою проблему иначе.
Когда я работаю с Excel так:
Код: Выделить всё
Private Sub cmdPrint_Click()
Dim MyPrint As Excel.Application
Set MyPrint = New Excel.Application
Set wrBook = MyPrint.Workbooks.Open("E:\Proba.xls")

    [color=red]With wrBook
        .Worksheets(1).PageSetup.PaperSize = xlPaperA4
       
        .Worksheets(1).PageSetup.FitToPagesWide = 1
        .Worksheets(1).PageSetup.FitToPagesTall = 1
       
        .Worksheets(1).PageSetup.Orientation = xlLandscape[/color]
               
        .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

у меня все класно работает. Стоит мне часть кода выставить в подпрограмму:
Код: Выделить всё
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
       
Call aaaa
               
        .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

Public Sub aaaa
With wrBook
       .Worksheets(1).PageSetup.FitToPagesWide = 1
        .Worksheets(1).PageSetup.FitToPagesTall = 1
       
        .Worksheets(1).PageSetup.Orientation = xlLandscape
End With
End Sub

как сразу код стопорит в этой подпрограмме с ругательством отсутствия объекта, т.е. wrBook.
И меня интересует вопрос - можно ли сохранить структуру кода (где подпрограмма) и отвертеться от этой ошибки, т.е сделать присвоение объектной переменной wrBook
Set wrBook = MyPrint.Workbooks.Open("E:\Proba.xls")
глобальным?
Век живи - век учись!
www.detal-plast.narod.ru

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

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

ExcelFile - это класс для работы с excel в формате BIFF.
Век живи - век учись!
www.detal-plast.narod.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2005 (Пт) 23:38

Где объявлена wrBook? :neutral:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Настройки печати в Excel

Сообщение Чудик » 15.01.2005 (Сб) 0:47

Ё-ё-ё-ё-ё! Столько людей побеспокоил!
Ребята, мне стыдно! Как-будто кто-то глаза мои закрыл. Во, лопухнулся! :oops: :oops: :oops:
Век живи - век учись!
www.detal-plast.narod.ru


Вернуться в Visual Basic 1–6

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

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

    TopList