"Macro to save as PDF"

I need a big help, I need a macro for a Calc document where when pressing the button it saves as PDF in a selected folder (this can be changed in the spreadsheet it self) with the specific name of a cell from the same spreadsheet.

I really appreciate the help."

Exemple : Lista 1.ods - Google Drive


Preciso de uma grande ajuda: preciso de uma macro para um documento do Calc que, ao pressionar o botão, salve como PDF em uma pasta selecionada (isso pode ser alterado na própria planilha) com o nome específico de uma célula da mesma planilha.

Agradeço muito a ajuda."

Tenho estas macros:

>'' Salvar Arquivo Nome Célula = Sub SaveFileNameCell
Sub SaveFileNameCell
    PLAN_NAME = "Plan1"
    CELL_NAME = "A1"
    FOLDER = "C:\Users\GILBERTO\Desktop\"
    sheet = ThisComponent.Sheets.getByName(PLAN_NAME)
    cell = sheet.getCellRangeByName(CELL_NAME)
    path = ConvertToURL(FOLDER + cell.String + ".ods")
    ThisComponent.storeToURL(path, Array()) ' NÂO RENOMEIA ARQUIVO ATIVO
'    ThisComponent.storeAsURL(path, Array()) ' RENOMEIA ARQUIVO ATIVO
' Var1 = cell.String
'    MsgBox "Save in: " + path
End Sub

.

>'' Salvar Arquivo Pasta Celula = Sub SaveFileFolderCel
Sub SaveFileFolderCel
' PEGAR NOME PASTA
	CELL_PASTA = "A5"
    FOLDER = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(CELL_PASTA)
' PEGAR NOME ARQUIVO 
    CELL_ARQ = "Plan1.A8"
    ARQ = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(CELL_ARQ)
' SALVAR
    path = ConvertToURL(FOLDER.String + ARQ.String + ".ods")
    ThisComponent.storeToURL(path, Array())
End Sub

.

>'' Salvar Como Arquivo Pasta Celula = Sub SalvarComo
Sub SalvarComo
' PEGAR NOME PASTA
	CELL_PASTA = "Parametros.F2"
    FOLDER = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(CELL_PASTA)
' PEGAR NOME ARQUIVO 
    CELL_ARQ = "Parametros.C38"
    ARQ = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(CELL_ARQ)
' SALVAR COMO
    path = ConvertToURL(FOLDER.String + ARQ.String + ".ods")
Dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = path 'DirFile 
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController _
.Frame, ".uno:SaveAs", "", 0, args1())
End Sub

.

>' Salvar em PDF = Sub SavePdf "AreaPrint", "DirAndFile"
Sub SavePDF ( AreaPrint As String, DirAndFile As String )
'Exemplo: SavePdf "ImprimirFactura", "C:/Users/GILBERTO/Desktop/selection10.pdf"

 Dim oController, oRange As Object
 Dim Arg1(0) as new com.sun.star.beans.PropertyValue
 Dim Args2(1) as new com.sun.star.beans.PropertyValue
 Dim PDF_URL As String 

	oController = ThisComponent.CurrentController
	oRange = ThisComponent.NamedRanges.getByName( AreaPrint ).ReferredCells
	oController.Select(oRange)
	
	Arg1(0).Name = "Selection" : Arg1(0).Value = oRange

	Args2(0).Name = "FilterName" : Args2(0).Value = "calc_pdf_Export"
	Args2(1).Name = "FilterData" : Args2(1).Value = Arg1()		

	PDF_URL = ConvertToURL( DirAndFile )
	
	ThisComponent.storeToURL(Pdf_URL, args2())
End Sub
2 Likes

Boas sr Gilberto e obrigados pela resposta rápida, ainda sou muito inexperiente em vba e a dúvida é a seguinte, e para usar todas essas macros em conjunto ou e para escolher a que mais me convém ?
Desculpe a ignorencia

Ola, @jfigas , as macros são individuais, se não tiver uma que lhe atenda totalmente, da para montar usando partes de outras. Lembrando LibreOffice não é VBA é Basic.

Só curiosidade, no arquivo pretende manter histórico dos Recibos emitidos?

sim, pretendo manter histórico dos recibos emitidos
obrigado

Sr Gilberto muito obrigado pela partilha, a 1ª macro consegui com que gravasse, mas se o nome for repetido ele grava por cima, se nao for pedir muito o que posso alterar sff

O que define o nome do arquivo?

Segue arquivo para testes…

Lista_1_GS.ods (26,4,KB)

1 Like

Bom dia de Portugal, muito obrigado, logo á noite vou experimentar

A segunda, 8/04/2024, 04:38, Gilberto Schiavinatto via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu:

Ola @jfigas , Segue versão atualizada, com arquivamento para histórico e consulta com impressão.
Desta maneira não é necessário ter arquivos em PDF dos recibos.

Lista_1_GS2.ods (71,1,KB)

Obrigado sr Gilberto, mais tarde dou feedback

A terça, 9/04/2024, 01:20, Gilberto Schiavinatto via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu:

Boa noite sr Gilberto, quero deixar o meu feedback, está a funcionar às mil maravilhas, fiz umas pequenas alterações para ficar mesmo ao meu gosto.
Muito obrigado pela grande ajuda

A terça, 9/04/2024, 10:25, José Figueiredo <jose.l.j.figueiredo@gmail.com> escreveu:

1 Like