Как мне сказать VBA сохранить файл в указанной папке c на основе значения ячейки? - PullRequest
0 голосов
/ 26 марта 2020

Я создал файл Excel, который использовал для создания слияния в Word, который, в свою очередь, содержит код VBA для создания документов PDF и Word. Сейчас код запускается и создает файлы в сгибах, определенных для Word и PDF, однако я не могу понять, как сохранить документы PDF / Word в папке, которая определяется значением, которое находится в файле Excel.

Я имею в виду, что если у меня есть 10 записей и в столбце K указан человек, который должен получить файлы. Это имя папки, которую я хочу создать. Таким образом, для каждой записи, в которой «Ron» указан в столбце K, файлы должны иметь значение go. Нужно ли мне определять каждого человека, который фактически является «папкой» в коде? И если да, то как?

Код, как он существует сейчас:

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

Спасибо за любую помощь, которую вы можете предложить. :)

...