Estou tentando sincronizar para gerar certificados
Porém os arquivos são exportados mas sem alteração nos campos de nome, evento etc.
Tenho a seguinte tabela no calc
Coluna A, a patir da linha 2 durante toda a coluna as informações “NOME”
Coluna B, na linha 2 “DO/DA”
Coluna C, na linha 2 “NOME DO EVENTO”
Coluna D, na linha 2 “MODALIDAE”
Coluna E, na linha 2 “PELO/PELA”
Coluna F, na linha 2 “PERÍODO”
Coluna G, na linha 2 “CARGA HORÁRIA”
Os nomes que estão em " " correspondem ao mesmo nome da caixa de texto no Impress
Segue abaixo o código
Sub CERTIFICADOS()
Dim oSM As Object
Dim oDoc As Object
Dim oSlides As Object
Dim oSlide As Object
Dim oShape As Object
Dim oPlanilha As Object
Dim lin As Integer
Dim caminho As String
Dim nomeArquivo As String
Dim props(0) As Object
' Verifica se deseja gerar os certificados
If MsgBox("Deseja gerar os certificados?", 36, "Certificado") = 7 Then
Exit Sub
End If
' Inicializa o LibreOffice
oSM = createUnoService("com.sun.star.frame.Desktop")
' Pega a planilha com os dados
oPlanilha = ThisComponent.Sheets.getByIndex(0)
' Pega o caminho do arquivo Calc
Dim partes() As String
partes = Split(ThisComponent.getURL(), "/")
caminho = ""
For i = 0 To UBound(partes) - 1
caminho = caminho & partes(i) & "/"
Next i
props(0) = createUnoStruct("com.sun.star.beans.PropertyValue")
props(0).Name = "FilterName"
props(0).Value = "impress_pdf_Export"
lin = 2
While oPlanilha.getCellByPosition(0, lin - 1).String <> ""
' Abre o arquivo Impress
oDoc = oSM.loadComponentFromURL(caminho & "LayoutUFGD.odp", "_blank", 0, Array())
' Pega a primeira página
oSlides = oDoc.getDrawPages()
oSlide = oSlides.getByIndex(0)
If Not IsNull(oSlide) Then
' Atualiza os shapes no slide
For i = 0 To oSlide.getCount() - 1
oShape = oSlide.getByIndex(i)
If oShape.supportsService("com.sun.star.drawing.TextShape") Then
texto = oShape.String
texto = Replace(texto, "[NOME]", oPlanilha.getCellByPosition(0, lin - 1).String)
texto = Replace(texto, "[DO/DA]", oPlanilha.getCellByPosition(1, lin - 1).String)
texto = Replace(texto, "[NOME DO EVENTO]", oPlanilha.getCellByPosition(2, lin - 1).String)
texto = Replace(texto, "[MODALIDADE]", oPlanilha.getCellByPosition(3, lin - 1).String)
texto = Replace(texto, "[PELO/PELA]", oPlanilha.getCellByPosition(4, lin - 1).String)
texto = Replace(texto, "[PERÍODO]", oPlanilha.getCellByPosition(5, lin - 1).String)
texto = Replace(texto, "[CARGA HORÁRIA]", oPlanilha.getCellByPosition(6, lin - 1).String & " horas")
oShape.String = texto
End If
Next
Else
MsgBox "Erro: oSlide não está definido."
End If
' Salva o certificado como PDF
nomeArquivo = oPlanilha.getCellByPosition(0, lin - 1).String
On Error Resume Next
oDoc.storeToURL(ConvertToURL(caminho & "CERTIFICADOS/" & nomeArquivo & ".pdf"), props())
On Error GoTo 0
' Fecha o documento Impress
oDoc.dispose()
lin = lin + 1
Wend
MsgBox "Certificados gerados com sucesso!", 64, "Concluído"
End Sub