指定要保存Excel文件的文件夹

每天,我都会在Outlook中收到大约100封电子邮件,邮件内容类似于“经销商销售驾驶舱 – XXXXXXXX”,XXXXXXXX是一个可变数字。

我需要获取电子邮件主题末尾的数字,然后将它们写入Excel电子表格的一个列中(如果在Excel中不可能,则将其写入一个.txt文件中)。

这是我find的代码。 问题是,它从来没有在“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 

当我运行它时,出现一个popup窗口,我想它会要求电子表格的名称,但我select的任何名称似乎已经存在,所以什么也没有创build。 它仍然会扫描我的收件箱,因为它会统计我的电子邮件,并显示“总共有X条消息被导出”。 X随收件箱中的电子邮件数量而变化。

除非你提供了一个完整InputBox path ,否则你只需要给它一个文件名,而SaveAs会把它放到当前目录中。

在这里输入图像说明

上面的InputBox显示了你提供的提示符 ,而不是默认值或初始值。 然后,当您到达SaveAs ,当您保存没有完整path的文件时,它将被保存在当前目录中,这可能与您在InputBox提示符中硬编码的path不同。

所以它绝对保存文件,它只是不保存到你认为是的D:\...path。

你的input框function应该可能是这样的:

 strFile = InputBox(Prompt:="Specify file location for export.", _ Default:="D:\LocalData\xl02926\Documents\Samuel\AutoCockpit\test.xlsx", _ Title:="Export Messages to Excel") 

上面,我们给出了一个提示,一个默认值和一个标题。 Default值填充InputBox的文本input字段,如果需要,可以更改它。

注意:当然,你应该确保用户提供了一个有效的path,并且该文件还没有存在,如果出现这些潜在的错误情况之一,你应该编写pipe理这些错误的代码,但这不在这个范围之内题。