【问题标题】:Specify folder to save Excel file指定文件夹以保存 Excel 文件
【发布时间】: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。那么,如果你说它肯定保存在某个地方,我该如何保存在正确的文件夹中?

标签: excel vba outlook


【解决方案1】:

除非您为InputBox 提供完整路径,否则您只需为其提供文件名,SaveAs 会将其放在当前目录。

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

所以它绝对正在保存文件,只是没有将它保存到您认为的D:\... 路径。

你的输入框函数应该是这样的:

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

在上面,我们给出了一个提示、一个默认值和一个标题。默认值填充InputBox 的文本输入字段,您可以根据需要更改它。

注意:当然,您应该确保用户提供了有效的路径,并且该文件不存在,如果出现这些潜在错误情况中的任何一种,您应该编写管理这些错误的代码,但这不在这个问题的范围。

【讨论】:

  • 谢谢!!这只是理解代码的问题。所以我没有提供完整的路径,而是在其他地方保存。现在我可以保存在正确的文件夹中,它就像一个魅力!非常感谢!
猜你喜欢
  • 2015-06-24
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2021-01-07
  • 2019-04-06
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多