Настройка сценария VB для программного создания папки, запускаемой по электронной почте - PullRequest
0 голосов
/ 24 марта 2011

Я впервые задаю вопрос всем вам. Я по профессии разработчик SQL, и я очень зеленый, когда дело доходит до VB.

Я управляю онлайновой базой данных для моего отдела Quickbase, и с помощью этого веб-сайта мы управляем запросами на отчеты. Я создаю тикет для каждого, и этот тикет создает электронное письмо, уведомляющее разработчика. ответственность за это назначение. У нас есть папки, настроенные для каждого входящего запроса, и создание этих папок вручную очень утомительно и неприятно.

Поэтому я спросил и огляделся по сторонам, наткнувшись на сценарий, который мог сделать то, что мне нужно, или мне так сказали. Тем не менее, я не уверен, как настроить его в соответствии с моими потребностями, или реализовать его правильно. Вот где я нуждаюсь в вашей помощи, честные боги программирования SO, пожалуйста, помогите мне убить этого дракона, и все богатства королевства будут вашими *!

Outlook VBA 

Sub MakeFile(MyMail As MailItem)
    myMailEntryID = MyMail.EntryID
    Set outlookNameSpace = Application.GetNamespace(“MAPI”)
    Set outlookMail = outlookNameSpace.GetItemFromID(myMailEntryID)
    MyArgument = OutlookMail.Subject
    Dim sMyCommand = “c:\makefile.bet ” & MyArgument
    Shell “cmd /c ” & sMyCommand, vbHide
End Sub
Makefile.bat
@echo off
cls
mkdir %1

URL веб-сайта: www.quickbase.com Путь к корневой папке: h: /// ntsp / data / reports - критерии / quickbase docs / [папка, которая будет создана]

* Богатство не денежное, а чувство добра и полноты, которое можно получить, только помогая собутыльнику, о, и это заставляет e-peen расти мощно и мощно!

1 Ответ

0 голосов
/ 16 апреля 2011

Будучи таким же ботаником, я собираюсь помочь вам начать в правильном направлении. Я думаю, что мы можем достичь того, чего вы хотите, только с помощью VBA, и нам не нужно использовать shell.

Сначала нам нужно подключить событие, когда все это должно произойти. Я полагаю, это когда ваш почтовый ящик получает электронную почту. Если я прямо здесь, это начало.

Пожалуйста, поймите 2 важные вещи.

  1. Это работает только для элементов, входящих в ваш почтовый ящик. Таким образом, если у вас уже есть правило перемещения элементов в другую папку, оно не будет работать.

  2. Вам необходимо "проверить" входящее письмо - мой пример показывает проверку предмета. Он будет вызывать вас только в особой процедуре ЕСЛИ и ТОЛЬКО ЕСЛИ у субъекта есть «Мой тест»

Чтобы ввести код в редакторе Visual Basic:

В меню Сервис выберите Макрос и затем щелкните Редактор Visual Basic. На панели «Проект» щелкните, чтобы развернуть папки, а затем дважды щелкните значок ThisOutlookSession. Введите или вставьте следующий код в окно кода.

Dim WithEvents objInboxItems As Outlook.Items


' Run this code to start your rule.
Sub StartRule()
   Dim objNameSpace As Outlook.NameSpace
   Dim objInboxFolder As Outlook.MAPIFolder

   Set objNameSpace = Application.Session
   Set objInboxFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
   Set objInboxItems = objInboxFolder.Items

End Sub

' Run this code to stop your rule.
Sub StopRule()
   Set objInboxItems = Nothing
End Sub

' This code is the actual rule.
Private Sub objInboxItems_ItemAdd(ByVal Item As Object)
   If Item.Subject = "My Test" Then
      Call checkForFolder
   End If
End Sub

Private Sub checkForFolder()



End Sub
  1. В меню Файл выберите Сохранить VbaProject.OTM.
  2. Теперь вы можете запускать макросы StartRule и StopRule, чтобы включать и выключать правило.
  3. Закройте редактор Visual Basic.

(Вам может потребоваться запустить и остановить Outlook, чтобы переменные перешли в «Hook».

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

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

...