Вопросы по Excel - открытие файла, печать и т.д.

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

Вопросы по Excel - открытие файла, печать и т.д.

Сообщение Perf2k2 » 20.07.2005 (Ср) 13:42

Всем привет опять. Обещал задать еще вопросы и задаю)

В общем настал в написании моей проги тот момент, когда надо работать вплотную с Экселем. Поэтому два вопроса:

1) У меня есть код:
Код: Выделить всё
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = GetObject("C:\Program Files\Microsoft Visual Studio\VB98\urist\tmpl\day.report.xls", Excel.Application)
Set xlBook = GetObject(mdlMain.xls_file_path & "day.report.xls", Excel.Workbooks)
Set xlSheet = GetObject(mdlMain.xls_file_path & "day.report.xls", Excel.Worksheets)
xlApp.Application.Visible = True
xlApp.Parent.Windows(1).Visible = True


Вот этот самый код и не работает. Показывает ошибку в строчке "Set xlApp..." и пишет ActiveX component cant create object. В чем может быть проблема?

2. Как вывести из Экселя на печать по средствам ВБ?

Спасибо.

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

Сообщение GSerg » 20.07.2005 (Ср) 13:53

Код: Выделить всё
with new excel.application
  .workbooks.open "C:\Program Files\Microsoft Visual Studio\VB98\urist\tmpl\day.report.xls"
  .visible=true
end with


Код: Выделить всё
with new excel.application
  with .workbooks.open ("C:\Program Files\Microsoft Visual Studio\VB98\urist\tmpl\day.report.xls")
    .printout
  end with
  .visible=true
end with
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 20.07.2005 (Ср) 14:31

Класс! Спасибо, заработало. Еще такой ламерский вопросик - какая функция говорит ВБ, чтобы он перестал выполнять данную процедуру? Мне, например, если выборка из Аксеса получилось пустой, нужно сказать "Ни одной записи не выбрано" и прервать выполнение процедуры до того, как она начнет создавать Эксель.

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

Сообщение uhm » 20.07.2005 (Ср) 14:34

Напиши в нужном месте End Sub

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 20.07.2005 (Ср) 14:38

Напиши в нужном месте End Sub

Не получится - напишет, что нету ЕНД ИФА:
Код: Выделить всё
If lrs.RecordCount = 0 Then
MsgBox "За данный период небыло заведено ни одного дела", 16, "Ошибка"
End Sub
End If

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

Сообщение GSerg » 20.07.2005 (Ср) 14:41

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

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

Сообщение uhm » 20.07.2005 (Ср) 14:47

Упс, промахнулся :)

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 20.07.2005 (Ср) 15:13

Так, еще вопрос - а можно ли перед печатью выводить диалог с настройками принтера, выбором принтера и т.д.?

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

Сообщение GSerg » 20.07.2005 (Ср) 15:16

Код: Выделить всё
with new excel.application
  .visible=true
  with .workbooks.open ("C:\Program Files\Microsoft Visual Studio\VB98\urist\tmpl\day.report.xls")
    .application.dialogs(xlDialogPrinterSetup).show
    .printout
  end with 
end with


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

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 20.07.2005 (Ср) 15:21

Одноко.. пасиба...
Я нажимал, было дело - просто MSDN у меня не установлен :wink:

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

Сообщение GSerg » 20.07.2005 (Ср) 15:23

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

Shururik
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 25.03.2008 (Вт) 13:00
Откуда: Москва

Сообщение Shururik » 25.03.2008 (Вт) 15:09

Ребят. А кто-нибудь знает такую фишку.
Мне нужен код, чтобы эксель открывался не в новой сессии, а взаимодействовал с другими. И открывался во всю душу.

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

Dim MyXlApp As New Excel.Application
Sub ВводЗначенийВЭксель()
With MyXlApp
        .Visible = True
        .Workbooks.Open (DefaultPath & ИмяФайла)
        .Workbooks(1).Activate
        МояПроцедура
        '.Workbooks(1).Close
        '.Quit
    End With
End Sub


Я не закрываю книгу и не делаю quit экселю, потому что хочу работать с документом. А он открывается наполовину. Не загружаются моя панель инструментов созданная VBA кодом. И самое не нравящееся мне это то, что открывается не то, что в новой книге, а в другом проекте, который не видит другие открытые книги.
Вопрос. Какой код написать, чтобы эксель открывался не отдельно от всех, а подключался к открытым? И чтобы полностью открывался, а не наполовину.


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

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

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

    TopList