首页 > 解决方案 > 使用在下拉列表中选择的单元格编号将行导出到 PDF/Word

问题描述

我正在使用下面的代码将 Excel 工作表中的一行导出到 Word/pdf 文件中。

它正在下载所有非空白行。

我希望当我在单元格下拉列表(“CA2”)中选择参考号时,它只下载选定的行。

Sub Download_Click()

Dim CustRow, CustCol, LastRow, TemplRow, Reference, RefRow As Long
Dim DocLoc, TagName, TagValue, TemplName, FileName As String
Dim CurDt, LastAppDt As Date
Dim WordDoc, WordApp, OutApp, OutMail As Object
Dim WordContent As Word.Range

With Sheet3

    TemplRow = .Range("CI1").Value
    TemplName = .Range("BV2").Value
    Reference = .Range("CA2").Value
    DocLoc = Sheet3.Range("CG2").Value

    On Error Resume Next
    Set WordApp = GetObject("Word.Application")
    If Err.Number <> 0 Then
        Err.Clear
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True
    End If

    LastRow = .Range("A9999").End(xlUp).Row
    For CustRow = 3 To LastRow
        Set WordDoc = WordApp.Documents.Open(FileName:=DocLoc, ReadOnly:=False)
        For CustCol = 1 To 70
            TagName = .Cells(2, CustCol).Value
            TagValue = .Cells(CustRow, CustCol).Value
            With WordDoc.Content.Find
                .Text = TagName
                .Replacement.Text = TagValue
                .Wrap = wdFindContinue
                .Execute Replace:=wdReplaceAll
            End With
        Next CustCol

        If .Range("BX2").Value = "PDF" Then
            FileName = ThisWorkbook.Path & "\" & .Range("B" & CustRow).Value & "_" & .Range("C" & CustRow).Value & ".pdf"
            WordDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF
            WordDoc.Close False
        Else
            FileName = ThisWorkbook.Path & "\" & .Range("B" & CustRow).Value & "_" & .Range("C" & CustRow).Value & ".docx"
            WordDoc.SaveAs FileName
        End If
    Next CustRow
    WordApp.Quit

End With

End Sub

标签: excelvba

解决方案


据我所知,您的代码会将第 3 行的所有行导出到最后一行:

For CustRow = 3 To LastRow

如果您只想导出选定的行,那么您需要做的就是删除该循环并将其替换为单个值,因此它只针对该值运行一次。删除上面的行并替换为:

CustRow = .Range("CA2").Value

确保删除Next CustRow. 还要确保单元格CA2包含一个数值,该数值是对您需要的行的直接引用。


推荐阅读