Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нашел такую процедуру, на MSDN (к сожалению для того, чтобы задать вопрос, вынужден цитировать ее полностью - здесь важно почти все):
----------------------------------------------------------------------------------------------
Public Sub Sync()
Dim nsp As Outlook.NameSpace
Dim sycs As Outlook.SyncObjects
Dim syc As Outlook.SyncObject
Dim i As Integer
Dim strPrompt As Integer
Set nsp = Application.GetNamespace("MAPI")
Set sycs = nsp.SyncObjects
For i = 1 To sycs.Count
Set syc = sycs.Item(i)
strPrompt = MsgBox( _
"Do you wish to synchronize " & syc.Name &"?", vbYesNo)
If strPrompt = vbYes Then
syc.Start
End If
Next
End Sub
Все вполне ясно и понятно, но хотелось бы кой-чё уточнить.
------------------------------------------------------------------------------------------------------------------
итак : если sycs.Count -> это
Цитата Iska:
количество групп отправки и получения »
то идет ли синхренизация последовательно, т.е. вначале, предположим идет вопрос по папке
"Входящие" и сверяется усе по этой папке, затем - вопрос по следующей по списку папке и ее
сихронизация и т.д., до достижения конечного значения sycs.Count?

При этом, если этот модуль будет вставлен в мою задачу (точнее модуль, подогнанный под Фокс, но
логика не меняется абсолютно), то программа НЕ пойдет выполняться дальше, пока не будет
достигнут ...End Sub?

Для меня это принципиально важно, т.к. я должен тормознуть задачу до окончания принудительного обновления Outlook из под Фокса (программа используется ориентировочно раз в месяц, почты может много накопиться и качать она будет долго), а программа, если она до окончания ...End Sub не остановится, за это время может проскочить далеко вперед, и нужное письмо просто не не успеет загрузиться.

Попытки найти подходящие обработчики событий пока ничего не дают.
Промблема вот в чем (возможно это Вы знаете но все-таки думаю стоит все-таки ето расписать):
Outlook из под Фокса, как объект определяется функцией CREATEOBJECT(......)
loOutlook = CREATEOBJECT("Outlook.application") здесь -> loOutlook - это созданная мной переменная Фокса типа объект в данной задаче. И фоксовская программа распознает все что относится к программированию под Outlook только, если строка постоена на элементе loOutlook или элементах на его основе, например:
loMapi = loOutLook.GetNameSpace("MAPI") - поймет прекрасно, как объект Outlook
loInbox = loMapi.GetDefaultFolder(6) |иначе loInbox = loOutLook.GetNameSpace("MAPI").GetDefaultFolder(6)|
тоже поймет прекрасно

а вот модуль отслеживания окончания сихронизации:
"[http://msdn.microsoft.com/en-us/library/bb147657(v=office.12).aspx"
Public WithEvents oItems As Outlook.Items
********************************
********************************
Private Sub mySync_SyncEnd()
MsgBox "Synchronization is complete."
End Sub
- не поймет т.к. нет возможности свести конструкцию к объектам на основе loOutlook цельной строкой
т.е. не удается создать конструкцию loOutlook......WithEvents или loOutlook....SyncEnd
а попытка Фокса интертрепировать конструкцию VBA, как фоксовские операторы, приведет к ошибке, либо
работе с непредсказуемым результатом. И свести его к конструкции с loOutLook, увы,увы. Копал долго, но без
результата.

А теперь - чем хороша Sub Sync(), что прописана в начале :
если я прав в в тех вопросах, что я задал в начале то программа вполне интерпретируется под Фокс и не пойдет дальше просто по автомату или с элементарной доработкой.
Прошу извинить за многословность, но она вынужденная чтобы было ясно о чем речь.
Думаю ответ будет значительно короче.
Е. Шапиро

Отправлено: 23:44, 20-11-2011 | #31