Pergunte aqui
0

Macro para exportar para PDF na mesma pasta e com o mesmo nome do arquivo original

perguntadas 2019-08-12 16:55:59 +0200

imagem do gravatar de Carlos3

updated 2019-08-13 19:31:50 +0200

Preciso de uma macro que exporte arquivos .odt para o formato .pdf.

O código a seguir seria suficiente se não fosse o fato de que os arquivos .odt a serem convertidos são localizados em pastas diferentes e com nomes diferentes. Preciso que a macro seja capaz de exportar cada pdf para a mesma pasta e com o mesmo nome do arquivo .odt que estiver aberto. Ou seja: apenas quero ter uma cópia em pdf para cada arquivo .odt localizados em diversas pastas (mantendo o nome original do arquivo).

sub Exporta_PDF
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Users/nomedeusuario/Documentos/teste).pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"

dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())


end sub

Preciso de algo parecido com o código abaixo que funcione no LibreOffice:

sub printPdf(cFile as string)

dim dispatcher as object
cURL = ConvertToURL( cFile )
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
dim args2(0) as new com.sun.star.beans.PropertyValue

cFile = Replace( cFile, "\", "/" )

nPosExtension = InStr( cFile, "." )
cFile = Mid$( cFile, 1, nPosExtension - 1 )

args1(0).Name = "URL"
args1(0).Value = "file:///" + cFile + ".pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
args2(0).Name = "Hidden"
args2(0).Value = True

oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0, args2())

dispatcher.executeDispatch(oDoc.getCurrentController, ".uno:ExportDirectToPDF", "", 0, args1())

end sub

Fonte: https://forum.openoffice.org/en/forum...

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2020-08-29 17:47:08 +0200

O código abaixo faz o que você quer. Estou tentando descobrir como exportar para pdf várias planilhas separadamente utilizando um laço.

Sub EXPORTTOPDF

dim URLStr     as string
dim document   as object
dim dispatcher as object
dim caminho    as string
dim planilha   as object
dim args(2) as new com.sun.star.beans.PropertyValue

    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    GlobalScope.BasicLibraries.LoadLibrary("Tools")
    URLStr = ThisComponent.getURL()
    caminho = DirectoryNameoutofPath(URLStr, "/")
    planilha = ThisComponent.CurrentController.ActiveSheet

    args(0).Name = "URL"
    args(0).Value = caminho & "/" & planilha.name & ".pdf"
    args(1).Name = "FilterName"
    args(1).Value = "calc_pdf_Export"

    dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args())

End Sub

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-08-12 16:55:59 +0200

Lidas: 95 vezes

Última atualização: Aug 29