将电子邮件附件从 HTML 转换为 XLSX

问题描述 投票:0回答:1

我有一个共享邮箱,每天都会收到带有 Excel 附件的电子邮件。

我有一个强大的查询功能可以从该收件箱中的每个附件中读取 Excel 文件内容。它失败了,因为

延期未如预期。

我相信这是由于 Excel 附件的附件名称中包含“.XLS”,因此文件名为 M12345.XLS.XLS

是否有 VBA 代码或函数可以在每次收到电子邮件时从文件名中删除 .XLS?

免费的 Power Automate 不允许 Excel 转换。

(与此同时,我要求发件人检查命名约定并从文件名中删除 .xls。)

更正:该文件为html格式。我正在寻找将文件转换为 xlsx。

excel vba xlsx power-automate
1个回答
0
投票

所以这应该可行,如果你进入 VBA 找到

ThisOutlookSession
并添加:

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim mail As Outlook.MailItem
Dim att As Attachment
Dim nameWithoutExtension As String
Dim itemID As Variant
Dim sharedMailbox As Outlook.Folder
Dim targetFolder As Outlook.Folder

' Set references to the shared mailbox and target subfolder
Set sharedMailbox = Session.Folders("[email protected]")
Set targetFolder = sharedMailbox.Folders("mastercardemails")

itemID = Split(EntryIDCollection, ",")
On Error Resume Next

For Each id In itemID
    Set mail = Application.Session.GetItemFromID(id)
    ' Check if the email is in the target folder
    If mail.Parent = targetFolder Then
        If mail.Attachments.Count > 0 Then
            For Each att In mail.Attachments
                ' Check if filename contains ".XLS.XLS"
                If InStr(att.FileName, ".XLS.XLS") > 0 Then
                    ' Strip the redundant extensions
                    nameWithoutExtension = att.FileName
                    Do While InStr(nameWithoutExtension, ".XLS.") > 0
                        nameWithoutExtension = Replace(nameWithoutExtension, ".XLS.", ".")
                    Loop
                    ' Final check if filename ends with redundant ".XLS"
                    If Right(nameWithoutExtension, 4) = ".XLS" Then
                        nameWithoutExtension = Left(nameWithoutExtension, Len(nameWithoutExtension) - 4) & ".XLS"
                    End If
                    ' Save the cleaned file
                    att.SaveAsFile "C:\YourFolderPath\" & nameWithoutExtension
                End If
            Next
        End If
    End If
Next
On Error GoTo 0
End Sub

显然将文件夹路径替换为正确的位置。至于您的更新:对上述内容进行更正。该文件是 html 格式,所以我希望将文件转换为 xlsx - 不知道如何在 VBA 中实现这一目标 - 我建议在文件打开后提出一个单独的问题,如何将 HTML 转换为 XLS磁盘。

© www.soinside.com 2019 - 2024. All rights reserved.