Задание размеров границ рабочего листа в Excel97

Программирование на Visual Basic for Applications
Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Задание размеров границ рабочего листа в Excel97

Сообщение Wasup! » 23.06.2006 (Пт) 10:26

Некоторое время назад делал в Excel 97 макрос форматирующий лист и выставляющий его область печати. Один раз изменил область печати вручную и записал все действия в макрос, и из него вставил такой код:

Код: Выделить всё
With w.PageSetup
    .PrintArea = "a1:J10"
    .LeftMargin = 0.35
    .RightMargin = 0.35
    .TopMargin = 0.35
    .BottomMargin = 0.35
    .CenterHorizontally = True
    .CenterVertically = True
    .Orientation = xlLandscape
End With


Сейчас в Excel 2000 метод .LeftMargin = 0.35 начал вызывать ошибку. Посмотрел в help`е, там написано, что размеры полей задаются в точках. И нужно использовать функцию.LeftMargin = Application.CentimetersToPoints(0.35).
Посмотреть, как было в Excel97, возможности нет. Может кто-то посмотреть, что написано про метод PageSetup.LeftMargin в help`е к Excel 97, в чем задаются размеры?
Есть ли в нем функция Application.CentimetersToPoints()?

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

Сообщение GSerg » 23.06.2006 (Пт) 10:37

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

Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Сообщение Wasup! » 02.08.2006 (Ср) 11:13

Здравствуйте, продолжу здесь, чтобы не заводить новую тему, поскольку вопрос похожий.

Есть программа на VB, которая выполняет запрос к базе данных, сохраняет результат в книгу Excel и выполняет над ним форматирование. Для установки границ листа при печати используется примерно такой код:
Код: Выделить всё

Sub test()
Dim e   As Excel.Application
Dim b   As Workbook
Dim w  As Worksheet

Set e = Excel.Application
Set b = e.Workbooks.Add
Set w = b.Sheets(1)

With w.PageSetup
    .PrintArea = "a1:J10"
    .LeftMargin = e.CentimetersToPoints(0.35)
    .RightMargin = e.CentimetersToPoints(0.35)
    .TopMargin = e.CentimetersToPoints(0.35)
    .BottomMargin = e.CentimetersToPoints(0.35)
    .CenterHorizontally = True
    .CenterVertically = True
    .Orientation = xlLandscape
End With

Set w = Nothing
Set b = Nothing
Set e = Nothing

End Sub


Все работало нормально, но сейчас начала выдаваться ошибка
на строке .PrintArea = "a1:J10": "1004 нельзя установить св-во printarea класса pagesetup"
На последующих строках то же самое, то есть при любой попытке задать свойство в pagesetup возникает ошибка.
Раньше программа выполнялась на компьютере с Excel 2000 (9.0 2812), сейчас Excel 2000 (9.0 6926 SP-3)
Скажите, в чем может быть ошибка? Может быть какие-то настройки запрещающие редактирование границ листа? Или не так установлено какое-то свойство объекта Application, Workbook, Worksheet?

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 02.08.2006 (Ср) 11:27

Дурацкий вопрос, но все равно задам на всякий случай: есть ли у тебя хоть один принтер, установленный на данном компьютере?
Быть... или не быть. Вот. В чём вопрос?

Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Сообщение Wasup! » 02.08.2006 (Ср) 11:57

Вопрос совсем не дурацкий. Нет, не установлен :oops: :oops: :oops:

А как лучше сделать проверку, установлен или нет принтер?
Код: Выделить всё
On error resume next
...
if err.number = 1004 then
msgbox "Не установлен принтер"
else
msgbox "Ошибка " & err.number & " " & err.description
end if


Или можно каким-то другим методом проверить наличие принтера, и в зависимости от этого выдать сообщение?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.08.2006 (Ср) 11:58

Если офис XP, то попробуй проверить Printers.Count.
Lasciate ogni speranza, voi ch'entrate.

Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Сообщение Wasup! » 02.08.2006 (Ср) 12:02

Excel используется 2000 в нем такой коллекции нет.
Но сама программа на VB6.0, в нем есть коллекция Printers, member of class global. Подразумевает ли это, что в скомпилированном коде метод
printers.count будет работать вне зависимости от версии Excel и количетва установленных принтеров?


Вернуться в VBA

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

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 59

    TopList