Vi uns códigos na internet e consegui montar um documento que salva as informações da mala direta em DOCX ou PDF. Porém, é necessário trocar o local pra salvar no código. Porém percebi que o local respeita essa ordem: "Partição\Caminho\Nome". Inclusive
o nome pode ter até espaços e tals. Gostaria de criar um formulário que ficasse intuitivo, respeitando o que eu coloquei acima, pensei em fazer uma variável com o nome do local e outra variável com o nome do arquivo.
Salvar como DOCX
Sub SalvarComoDOCX()
Dim a As Integer
Dim registro As Integer
Dim nomeArquivo As String
'Define o primeiro registro da mala direta
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
'Contador de registros
a = ActiveDocument.MailMerge.DataSource.RecordCount
'Salva todos os registros
For registro = 1 To a
'Atribui o valor de cada registro da coluna nome para a variável nomeArquivo que dará nome ao novo arquivo. Caso queira outro nome, basta colocar o nome da coluna desejada
nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("Lote").Value
ActiveDocument.SaveAs2 FileName:= _
"C:\Users\Felipe\Desktop\Nome " & nomeArquivo & ".docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next registro
End
End Sub
Salvar como PDF
Sub SalvarComoPDF()
Dim a As Integer
Dim registro As Integer
Dim nomeArquivo As String
'Define o primeiro registro da mala direta
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
'Contador de registros
a = ActiveDocument.MailMerge.DataSource.RecordCount
'Exporta todos os registros
For registro = 1 To a
'Atribui o valor de cada registro da coluna nome para a variável nomeArquivo que dará nome ao novo arquivo. Caso queira outro nome, basta colocar o nome da coluna desejada
nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("Lote").Value
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Users\Felipe\Desktop\Nome" & nomeArquivo & ".pdf" _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next registro
End
End Sub
E esse é o formulário como eu pensei.
https:// social.msdn.microsoft. com/Forums/getfile/1615411 (tirar os espaços)