Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли запустить из VBS'a?

248
04 января 2009 года
Dmitry2064
590 / / 06.12.2006
Я написал такой код для вставки события в текущий день в календаре в Аутлюке:
Код:
Sub Sobytie()
Dim myNamespace As Outlook.NameSpace
    Set myolApp = CreateObject("Outlook.Application")
    Set myNamespace = myolApp.GetNamespace("MAPI")
    Set myolApp.ActiveExplorer.CurrentFolder = _
    myNamespace.GetDefaultFolder(olFolderCalendar)
Dim olApp As Outlook.Application
Dim Sobytie As Outlook.AppointmentItem
Dim mTime As String
Set olApp = New Outlook.Application
Set Sobytie = olApp.CreateItem(olAppointmentItem)
mTime = Date
Sobytie.Start = CDate(mTime)
Sobytie.Subject = "Событие"
Sobytie.AllDayEvent = True
Sobytie.Save
End Sub

Можно ли этот код подправить, чтобы запускать из файла с расширением vbs (без необходимости открытия самого Аутлюка)?
В данный момент при попытке создать файл sobytie.vbs с таким кодом у меня пишется "Ошибка компиляции на строке 1, символ 11". Т.е. может быть нельзя вообще обращаться к Аутлюку не из самого Аутлюка?

P.S. В самом Аутлюке код работает нормально.
405
12 января 2009 года
Dmitrii
554 / / 16.12.2004
Цитата: Dmitry2064
... Можно ли этот код подправить, чтобы запускать из файла с расширением vbs (без необходимости открытия самого Аутлюка)?


По крайней мере, надо сделать следующее:
1. Строки [color=blue]Sub Sobytie()[/color] и [color=blue]End Sub[/color] убрать совсем.
2. Из выражений объявления переменных убрать указания типов данных (в VBS все данные имеют тип Variant).
Например, [color=red]Dim mTime As String[/color] должно превратиться в [color=green]Dim mTime[/color]
3. Строку
[color=red]Set olApp = New Outlook.Application[/color]
заменить на строку
[color=green]Set olApp = CreateObject("Outlook.Application")[/color]
Кстати, зачем создавать второй экземпляр класса Outlook.Application, когда один уже есть?

248
21 января 2009 года
Dmitry2064
590 / / 06.12.2006
Подчистил до такого состояния:
Код:
Dim myNamespace
Dim myolApp
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = myNamespace.GetDefaultFolder(olFolderCalendar)
[COLOR="DarkGreen"]'на этой строке пишет:
строка 5, символ 1, Операци не выполнена.
Один или неск. параметров имеют недопустимые значения.
Код 80070057. Источник Microsoft Office Outlook
наверное не нравится ".ActiveExplorer."[/COLOR]

Dim Sobytie
Dim mTime
Set Sobytie = myolApp.CreateItem(olAppointmentItem)
mTime = Date & " 10:30:00 AM"
Sobytie.Subject = "мое событие"
Sobytie.Start = CDate(mTime)
Sobytie.Duration = 30
Sobytie.Save


Может быть надо просто как-то запустить саму программу:
[COLOR="DarkRed"]c:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE[/COLOR] ?
405
26 января 2009 года
Dmitrii
554 / / 16.12.2004
Цитата: Dmitry2064
... на этой строке пишет:
строка 5, символ 1, Операци не выполнена.
Один или неск. параметров имеют недопустимые значения...


1. Задайтесь вопросом, хватает ли параметров методу GetDefaultFolder?
2. Если с количеством параметров всё в порядке, то упростите левую часть оператора
[color=red]Set myolApp.ActiveExplorer.CurrentFolder[/color] = myNamespace.GetDefaultFolder(olFolderCalendar)

Цитата: Dmitry2064
... Может быть надо просто как-то запустить саму программу..?

Не надо. Экземпляр приложения создаётся при выполнении оператора
[color=blue]Set myolApp = CreateObject("Outlook.Application")[/color]
Вы не видите окна приложения, потому что оно скрыто. Увидеть его можно так:

 
Код:
myolApp.Visible = True
MsgBox "Пауза"

Кстати, не забывайте перед завершением сценария закрывать процесс приложения:
 
Код:
myolApp.Quit
Иначе он останется "висеть" в памяти.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог