Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.11.2017
Сообщений: 2
1

Взаимодействие outlook и excel через VBA

22.11.2017, 13:54. Показов 2879. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени!
Возникла необходимость при получении письма в outlook изменять некторые ячейки в файле excel. Причем, этот файл скорее всего уже открыт на этом же компьютере. С этим файлом ведется постоянная работа.
Насколько я понимаю, средствами VBA взаимодействие между независимо запущенными outlook и excel не построить.
Остается вариант открывать этот файл из outlook после проверки, что он уже не открыт пользователем (если уже открыт, то ничего не делать, - уже первый минус). После открытия установить xlApp.Visible = True и дальше пользователю работать с этим файлом.
Для того, чтобы дальше outlook мог взаимодействавать с этим файлом, например, при следующем запуске sub, необходимо куда-либо сохранить экземпляр класса excel.application или worksheet. Переменные с объектными типами объявленные глобальными в модуле очищаются в отличии от обычных числовых/строковых значений.

Подскажите пожалуйста возможные решения.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2017, 13:54
Ответы с готовыми решениями:

Шаблон письма из Word в Outlook через Excel VBA
Здравствуйте! Подскажите, пожалуйста, можно ли решить следующую задачу и как? Есть файл Excel, в...

Запрос через Outlook, обработка в Excel, ответ через Outlook
Уважаемые VB & VBA_ програмисты! Насколько возможно реализовать следующую задачу, домашними ...

Взаимодействие с Outlook из vba
Всем привет, хочу осуществить идею отправки подсказки о пароле при входе в комплекс. Больше всего...

VBA Excel-Outlook - id письма
Имеет ли каждое письмо в outlook'е свой ID-шник? Если имеет, то как его узнать? Суть задачи в...

2
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
23.11.2017, 06:40 2
Насколько я понимаю, средствами VBA взаимодействие между независимо запущенными outlook и excel не построить
Не правильно понимаешь. Из екселя создаёшь экземпляр оутлука и работаешь с ним
0
0 / 0 / 0
Регистрация: 22.11.2017
Сообщений: 2
23.11.2017, 17:44  [ТС] 3
Я имел ввиду, если оутлок запущен пользователем и таблица в екселе открыта пользователем. Тут похоже только через Win32 API.
я же описал проблематику, приведу часть кода модуля, если не совсем понятно:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Option Explicit
Public xlApp As Excel.Application
Public wBook As Workbook
Public lTest As Long
 
' Outlook rule handler:
Sub ParseMessage(Item As Outlook.MailItem)
    
    
    If Not openfile() Then
        Print #1, "File already open in external process"
        Close #1
        Exit Sub
    End If
    
End Sub
 
 
Function openfile() As Boolean
    Dim lFile As Integer
    openfile = False
    If xlApp Is Nothing Then Set xlApp = New Excel.Application
    
    For Each wBook In xlApp.Workbooks
        If wBook.Name = WB_NAME Then GoTo wbFound
    Next wBook
    lFile = FreeFile
    On Error Resume Next
    Open WB_PATH For Append Access Read Write Lock Read Write As #lFile
    If Err.Number Then
        Close #lFile
        On Error GoTo 0
        Exit Function
    End If
    Close #lFile
    On Error GoTo 0
    Set wBook = xlApp.Workbooks.Open(WB_PATH, False)
wbFound:
    xlApp.Visible = True
    openfile = True
End Function
Здесь ParseMessage запускается правилом оутлук,
openfile призвана открывать файл эксель, если еще не открыт и сохранять xlApp до следующего запуска.

в 22 строке xlApp всегда пустой, даже если функция вызывается не первый раз в отличии от численных или строковых переменных модуля.
Как это обойти - не представляю, да и возможно ли?

Добавлено через 5 часов 47 минут
Вопрос разрешился через статические переменные процедуры:

Option Explicit
Public xlApp As Excel.Application
Public wBook As Workbook

Sub ParseMessage(Item As Outlook.MailItem)
Static xlApp As Excel.Application
Static wBook As Workbook
.....
0
23.11.2017, 17:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 17:44
Помогаю со студенческими работами здесь

Excel vba: найти повторяющиеся встречи в outlook
Доброго времени суток, уважаемые форумчане! Есть очень серьезная необходимость вытащить из...

Импорт таблицы Excel в БД Access через VBA через кнопку в Excel
Форумчане, помогите, пожалуйста с кодом макроса в excel. Задача состоит в следующем:в файле...

Взаимодействие с Навигатором заголовков WORD через VBA
Здравствуйте. Ситуация такая: Есть некий документ, в котором есть какие-то заголовки, под ними...

Голосование в outlook через конструктор форм VBA
нужно сделать голосовалку в VBA, чтобы использовать её в outlook (встроенная голосовалка слишком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru