You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA宏需求:未触发MsgBox时需继续执行后续代码

修改后的VBA代码
Sub Relieving_Pdf()
    Dim Answer As VbMsgBoxResult ' 修正类型:MsgBox返回枚举值而非字符串
    Dim StrFolder As String
    Dim StrFile As String
    Dim Folder As String
    Dim StrName As String
    Dim StrBack1 As String
    Dim StrBack As String
    Dim StrName2 As String ' 新增变量声明,避免未定义错误

    StrFolder = Range("A69").Value 'path
    StrFile = Range("B28").Value  'Company Initial Name
    Folder = "\" & Range("F1").Text   'Month and year folder name
    StrName = "\" & Range("B2").Value   'Candidate name
    StrBack1 = Left$(StrFolder, InStrRev(StrFolder, "\") - 1)
    StrBack = Left$(StrBack1, InStrRev(StrBack1, "\") - 1)

    Application.Run "REFRESH"

    ' 仅在E14值为指定内容时弹出确认框,用户选No则退出
    If Range("E14").Value = "EID Already Exist" Then
        Answer = MsgBox("EID Already Exist Do you want to go ON?", vbQuestion + vbYesNo, "User Response")
        If Answer = vbNo Then
            Exit Sub
        End If
    End If

    ' 以下为核心执行逻辑,无论E14值是否符合条件,只要未退出就执行
    If Len(Dir(StrBack & Folder, vbDirectory)) = 0 Then
        MkDir StrBack & Folder
    End If
    If Len(Dir(StrBack & Folder & StrName, vbDirectory)) = 0 Then
        MkDir StrBack & Folder & StrName
    End If
    ChDir StrFolder
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
        StrFolder & "\" & StrFile & " Master Data.xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Application.DisplayAlerts = True
    
    Dim excelpath As String
    Dim wordApp As Object
    Set wordApp = CreateObject("Word.Application")
    excelpath = ThisWorkbook.FullName
    wordApp.Documents.Open Filename:=StrFolder & "\" & StrFile & " Master File Macro.docm"
    wordApp.Visible = True
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        excelpath _
        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & excelpath & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engi" _
        , SQLStatement:="SELECT * FROM `Output$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess      'enter sheet name
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = 1
            .LastRecord = 1
            StrName2 = "\" & .DataFields("offername")
            StrFolder = StrBack & "\"
        End With
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
            StrFolder & Folder & StrName & StrName2 & ".pdf", ExportFormat:= _
            wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
            wdExportOptimizeForPrint, Range:=wdExportFromTo, From:=1, To:=4, Item:= _
            wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False
    End With

    ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
    wordApp.Quit
    Set wordApp = Nothing ' 修正对象释放变量名,原代码写的wdapp
    ' Application.Quit ' 如果不需要退出Excel,建议注释掉这行,避免误关文件
End Sub
关键修改说明
  • 调整逻辑结构:将核心执行代码从原有的嵌套If块中移出,改为:仅当E14值为"EID Already Exist"且用户选择No时退出宏,其余所有情况(E14值不符、或E14值符合但用户选Yes)都会执行后续流程。
  • 修正变量类型:将原AnswerYes的String类型改为VbMsgBoxResult,匹配MsgBox的返回值类型,避免类型不匹配问题。
  • 新增变量声明:补充StrName2的声明,符合VBA变量声明规范,避免隐式类型错误。
  • 修正对象释放:原代码中Set wdapp = Nothing是笔误,改为Set wordApp = Nothing,确保正确释放Word对象。
  • 修复数据源路径:原代码中Connection字符串里的Data Source=excelpath是硬编码字符串,改为Data Source=" & excelpath & ",正确引用变量值。
  • 可选优化:注释掉Application.Quit,避免宏执行后直接关闭Excel,如需自动关闭可取消注释。

内容的提问来源于stack exchange,提问作者Samy Somy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:04:56