Outlook VBA Sourcing имя файла вложения из строки, найденной во вложении - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь написать код в Outlook (VBA), который будет автоматически сохранять вложения в файл по мере их поступления.Однако трудность заключается в том, что имя файла, который я хочу сохранить, частично извлечено из содержимого файла (например, вложение называется «10 -0123.xls» и содержит данные из Lockyer Valley. Мне нужен файл на дискеназываться '10 -0123_Lockyer.xls ').Единственная ссылка на местоположение (в данном случае «Lockyer») содержится во вложении, и оба номера (в данном случае «10 -0123») и местоположение (в данном случае «Lockyer») меняются с каждым электронным письмом.

Я нашел способ сделать это, сохранив файл на диск как есть ('10 -0123.xls '), открыв его, найдя строку в файле (' Lockyer '), сохранив какновое имя файла ('10 -0123_Lockyer.xls '), а затем уничтожение исходного файла ('10 -0123.xls'), но, поскольку файлы достаточно велики, для запуска макроса требуется некоторое время.Есть ли более эффективный способ достижения этого?Может быть, способ открыть файл непосредственно из Outlook, не сохраняя его сначала на диск?

Код:

unPrntdRprts = "C:\New Reports"
For Each Attachment In MailItem.Attachments
    AtNameExt = Attachment.DisplayName
    AtExt = Right(AtNameExt, 4)
    AtName = Left(AtNameExt, Len(AtNameExt) - 4)
    XLApp.DisplayAlerts = False
    Attachment.SaveAsFile (UnPrntdRprts & "\" & AtNameExt)
    XLApp.DisplayAlerts = True
    XLApp.Workbooks.Open (UnPrntdRprts & "\" & AtNameExt)
    SiteName = XLApp.Workbooks(AtNameExt).Worksheets(1).Range("A24").Value
    SavName = AtName & "_" & SiteName & AtExt
    XLApp.DisplayAlerts = False
    XLApp.Workbooks(AtNameExt).SaveAs (UnPrntdRprts & "\" & SavName)
    XLApp.DisplayAlerts = True
    XLApp.Workbooks(SavName).Close
    Kill (UnPrntdRprts & "\" & AtNameExt)
Next

1 Ответ

2 голосов
/ 08 сентября 2011

Можете ли вы:

  1. Сохранить файл
  2. Открыть файл, чтобы определить правильное имя файла
  3. Закрыть файл
  4. Переименоватьfile

После этого будет удалена вторая функция сохранения.

...