【发布时间】:2017-08-09 18:44:00
【问题描述】:
我每天在 Outlook 中收到大约 100 封电子邮件,主题类似“Dealer Sales Cockpit - XXXXXXXX”,其中 XXXXXXXX 是一个可变数字。
我需要获取电子邮件主题末尾的数字,并将它们写入 Excel 电子表格(或 .txt 文件,如果在 Excel 中无法实现)的列中。
这是我找到的代码。问题是,它从不写在“test.xlsx”中。从来没有真正使用过 VBA,我无法解决它。
Sub ExportMessagesToExcel()
Dim olkMsg As Object, _
excApp As Object, _
excWkb As Object, _
excWks As Object, _
lngRow As Long, _
lngCnt As Long, _
intPos As Integer, _
strFil As String
strFil = InputBox("D:\LocalData\xl02926\Documents\Samuel\AutoCockpit\test.xlsx", "Export Messages to Excel")
If strFil <> "" Then
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
'Write Excel Column Headers
With excWks
.Cells(1, 1) = "Computer"
End With
lngRow = 2
'Write messages to spreadsheet
For Each olkMsg In Application.ActiveExplorer.CurrentFolder.Items
'Only export messages, not receipts or appointment requests, etc.
If olkMsg.Class = olMail Then
'Add a row for each field in the message you want to export
intPos = InStrRev(olkMsg.Subject, " ")
excWks.Cells(lngRow, 1) = Mid(olkMsg.Subject, intPos + 1)
lngRow = lngRow + 1
lngCnt = lngCnt + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFil
excWkb.Close
End If
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
MsgBox "Process complete. A total of " & lngCnt & " messages were
exported.", vbInformation + vbOKOnly, "Export messages to Excel"
End Sub
当我运行它时,会出现一个弹出窗口,我认为它要求为电子表格输入一个名称,但我选择的任何名称似乎都已经存在,因此没有创建任何内容。它仍然会扫描我的收件箱,因为它会计算我的电子邮件并显示“总共导出了 X 封邮件”。 X 随收件箱中的电子邮件数量而变化。
【问题讨论】:
-
弹出窗口出现在哪一行,它实际上要求您/说什么?
-
除非你为
InputBox提供一个完整路径,你只是给它一个文件名,SaveAs会把它放在当前目录。所以它绝对正在保存文件,只是没有将它保存到您认为的D:\...路径。 -
弹窗出现在
strFil = InputBox("D:\LocalData\xl02926\Documents\Samuel\AutoCockpit\test.xlsx", "Export Messages to Excel")之后 -
它什么都不问,它只是显示我在代码中指定的路径
-
我正在使用
InputBox,因为它已经附带了代码,我没有写任何东西,我以前从未使用过VBA。那么,如果你说它肯定保存在某个地方,我该如何保存在正确的文件夹中?