none
Salvar Mala Direta em arquivo DOCX ou PDF RRS feed

  • Pergunta

  • 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)

    quinta-feira, 20 de agosto de 2020 16:47