Перейти к содержимому


Фотография

Макрос в Microsoft Outlook 2007


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 11 February 2011 - 19:30

Народ, кто ни будь может помочь, а если быть точнее, написать макрос для Microsoft Outlook 2007.

Задумка вроде простая, почти реализовал её в правилах. Но столкнулся с одной проблемой. В общем так:

Есть письмо с определенным текстом в теме. Его надо переместить в определенную папку "Заявки" и сделать ответ на определенных адресатов с текстом "Заявка принята под номером [%%]" Так вот что бы он присваивал каждой новой заявке новый номер - это проблематично. Чувствую надо макрос, а как этот макрос написать - не знаю.
С excel все проще, там есть рекордер, записал что надо делать и уже интуитивно подгоняй под себя, если VBA не знаешь, как я.

#2 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 12 February 2011 - 16:00

так все сложно ? smile.gif

#3 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 14 February 2011 - 16:45

Public Sub CustomMailMessageRuleADV(Item As Outlook.MailItem)

Dim Mail_Answer As Outlook.MailItem

Dim Number_of_Order As Integer 'переменная для номера заявки

Date_of_Order = Now 'дата

If LCase$(Item.Subject) = "заявка" Then

MsgBox "Поступила заявка от " & Item.SenderEmailAddress ' это можно убрать, если мешает

Set Mail_Answer = CreateItem(olMailItem)

With Mail_Answer
Mail_Answer.To = Item.SenderEmailAddress
Mail_Answer.Body = Item.Body
Mail_Answer.Subject = "RE: Ваша заявка зарегистрирована под № " & Number_of_Order & " от " & Date_of_Order
Mail_Answer.Send

End With
End If

End Sub
Вот что получается, но проблема с номером заявки остается smile.gif
Предлагают в параметр реестра засунуть, и к нему плюсовать. Но подобного никогда не делал, и уж привязать к этому параметру у меня не получится. Вообще не представляю как это можно реализовать, и правильно ли я понял )
Может в .txt ? Останется лишь привязаться к нему...

Сообщение отредактировал ADVOKAT: 14 February 2011 - 16:47


#4 {disa}

{disa}

    Местный

  • Жители HomeNet
  • PipPipPipPip
  • 2,549 сообщений

Отправлено 15 February 2011 - 12:01

А если как вариант присваивать заявке номер вида Date_of_Order & Time_of_Order ?
Достаточно уникальный номер будет получаться.

#5 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 15 February 2011 - 13:01

Так как не определен вид вывода Date_of_Order значение выдается ДД:ММ:ГГ ЧЧ:ММ:СС:
RE: Ваша заявка зарегистрирована под № 0 от 15.02.2011 12:46:57

Можно конечно, но слишком просто и не красиво)
В идеале, мне подсказали, что надо у входящего письма менять тему. Т.е если приходит письмо с темой "Заявка : не срабатывает планирование" изменять её на "Заявка №1 от 15.02.2011 12:46:57 : не срабатывает планирование" и сохранять в папке "Заявки". Ответ с информацией о присвоении номера заявки уходит определенным адресатам.
А вообще в идеале, хорошо было бы письмо переносить в эксель. Что бы без сортировок в аутлуке и консолидирования информации иметь отчет о поступивших заявках.

Сообщение отредактировал ADVOKAT: 15 February 2011 - 13:03


#6 {disa}

{disa}

    Местный

  • Жители HomeNet
  • PipPipPipPip
  • 2,549 сообщений

Отправлено 15 February 2011 - 13:42

Так как не определен вид вывода Date_of_Order значение выдается ДД:ММ:ГГ ЧЧ:ММ:СС:
RE: Ваша заявка зарегистрирована под № 0 от 15.02.2011 12:46:57

Можно конечно, но слишком просто и не красиво)

Ну формат даты/времени можно поменять и тогда Ваш пример будет выглядеть например так:
RE: Ваша заявка зарегистрирована под № 15022011124657 smile.gif
Порядок ггггммддччммсс можно менять

#7 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 15 February 2011 - 13:50

А об этом я даже не подумал))))
Можно, знаю..
Хороший выход из ситуации, возможно воспользусь как временное решение. Спасибо!

ОФФ: А еще можно выводить последнюю цифру года. После каждой заявки просто переводить дату на год вперед biggrin.gif

Сообщение отредактировал ADVOKAT: 15 February 2011 - 13:51


#8 {disa}

{disa}

    Местный

  • Жители HomeNet
  • PipPipPipPip
  • 2,549 сообщений

Отправлено 15 February 2011 - 14:10

В случае с отдельным номером заявки придется где-то хранить счетчик (текстовый файл, база...)
Имхо, лишние телодвижения.
Хотя сделать не сложно думаю.
Храним последний номер заявки в counter.txt, читаем его, подставляем в тему письма, записываем или создаем заново файл со следующим показанием счетчика. И тд

#9 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 15 February 2011 - 14:17

Именно, это я понимаю, этого я и хочу добиться. Но т.к планирую в дальнейшем использовать excel, .тхт отсеивается автоматически(зачем делать много файлов, excel замечательно с этим справится) А вот как этого добиться, к сожалению я не знаю, поэтому и пишу тут)

#10 atlant_is

atlant_is

    Капитан Очевидность

  • Супер Модератор
  • PipPipPipPipPipPipPip
  • 11,888 сообщений

Отправлено 15 February 2011 - 15:13

Создаете объект excel (объект называется "excel.application") открываете книгу, читаете-пишете значение нужной вам ячейки, закрываете книгу, освобождаете объект excel

#11 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 15 February 2011 - 15:53

Звучит как управлять самолетом. Вот только штурвал видел лишь по телевизору. Вроде все просто, а кнопочек так много, так много smile.gif

Dim workExcel As New Excel.Application

Как я понимаю, так ?

Сообщение отредактировал ADVOKAT: 15 February 2011 - 15:53


#12 atlant_is

atlant_is

    Капитан Очевидность

  • Супер Модератор
  • PipPipPipPipPipPipPip
  • 11,888 сообщений

Отправлено 15 February 2011 - 16:51

Вроде как-то так smile.gif Я сам на VBA давно не упражнялся, но да, так должно быть.
Потом
Код
workExcel.Workbooks.Open файл.xls
workExcel.workbook.sheets(1).cells(1,1).value=1
workExcel.workbook.save
release workExcel

Мог ошибиться кое-где, но в целом как-то так smile.gif

#13 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 15 February 2011 - 17:13

Пойду тестировать)
надо на этом форуме ввести кнопку "спасибо" smile.gif

#14 ADVOKAT

ADVOKAT

    Графоман

  • Модераторы
  • PipPipPip
  • 1,931 сообщений

Отправлено 21 February 2011 - 15:57

Решил использовать .txt smile.gif Вот получилось, не без посторонней помощи конечно. Всем спасибо, кто помогал.

Код
Public Sub resend(Item As Outlook.MailItem)
Dim myOut As Outlook.Application
Dim inFolder As Outlook.MAPIFolder
Dim myNameSpace As Outlook.NameSpace
  Set myoOut = New Outlook.Application
  Set myNameSpace = myoOut.GetNamespace("MAPI")
  'Set inFolder = myNameSpace.Folders.Item(1).Items()

Dim Mail_Answer As Outlook.MailItem
Dim Number_of_Order As Integer
Dim Date_of_Order
Date_of_Order = Date
Open "C:\INI.txt" For Input As #1
Number_of_Order = Val(Input(LOF(1), 1))
Close #1
If LCase$(Item.Subject) = "заявка" Then
Number_of_Order = Number_of_Order + 1
MsgBox "Поступила заявка от " & Item.SenderName
Set Mail_Answer = CreateItem(olMailItem)
With Mail_Answer
Mail_Answer.To = Item.SenderEmailAddress
Mail_Answer.Body = Item.Body
Mail_Answer.Subject = "RE: Ваша заявка зарегистрирована под № " & Number_of_Order & " от " & Date_of_Order
Mail_Answer.Send

End With
  'Item.Move (inFolder)
   Open "C:\INI.txt" For Output As #1
Print #1, Number_of_Order
Close #1

End If

End Sub





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных