首页 > 解决方案 > 如何告诉 VBA 根据单元格值将文件保存在特定文件夹中?

问题描述

我创建了一个 Excel 文件,用于在 Word 中创建邮件合并,该文件又包含用于创建 PDF 和 Word 文档的 VBA 代码。现在,代码运行并在为 Word 和 PDF 定义的折叠中创建文件,但是我无法弄清楚如何将 PDF/Word 文档保存在由 Excel 文件中的值定义的文件夹中。

我的意思是,如果我有 10 条记录,并且在 K 列中列出了要获取文件的人。这是我要创建的文件夹的名称。因此,对于列 K 中列出“Ron”的每条记录,这就是文件应该去的地方。我是否需要在代码中定义实际上是“文件夹”的每个人?如果是这样怎么办?

现在存在的代码:

Option Explicit

Const PDF_SAVED As String = "C:\Leader Folders\2019 TR Statements\Ron - TEST ENVIRONMENT\PDFs\"
Const WORD_SAVED As String = "C:\Leader Folders\2019 TR Statements\Ron - TEST ENVIRONMENT\Word Docs\"
Const SOURCE_FILE_PATH As String = "C:\Leader Folders\2019 TR Statements\Ron - TEST ENVIRONMENT\Mail Merge Source Data Ron TEST.xlsx"

Sub TestRun()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim MainDoc As Document, TargetDoc As Document
Dim dbPath As String
Dim recordNumber As Long, totalRecord As Long

Set MainDoc = ActiveDocument
With MainDoc.MailMerge

    .OpenDataSource Name:=SOURCE_FILE_PATH, sqlstatement:="SELECT * FROM [Sheet1$]"

    totalRecord = .DataSource.RecordCount

    For recordNumber = 1 To totalRecord

        With .DataSource
            .ActiveRecord = recordNumber
            .FirstRecord = recordNumber
            .LastRecord = recordNumber
        End With

        .Destination = wdSendToNewDocument
        .Execute False

        Set TargetDoc = ActiveDocument

        TargetDoc.SaveAs2 WORD_SAVED & .DataSource.DataFields("Employee_Name").Value & ".docx", wdFormatDocumentDefault
        TargetDoc.ExportAsFixedFormat PDF_SAVED & .DataSource.DataFields("Employee_Name").Value & ".pdf", exportformat:=wdExportFormatPDF

        TargetDoc.Close False

        Set TargetDoc = Nothing

    Next recordNumber

End With

Set MainDoc = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

感谢您提供的任何帮助。:)

标签: excelvbams-wordmailmerge

解决方案


推荐阅读