Libreoffice Calc - Macro copiar apenas valores

Bom dia
Estou tentando fazer um botão para copiar valores de uma planilha para outra. Tentei fazer através do método de gravação de macros, porém estou tendo um problema:
A célula a ser copiada contém uma fórmula. Quero copiar apenas o valor, porém a macro não está respondendo conforme desejado…

REM  *****  BASIC  *****

Sub Teste
	GetValueWhereEnterWhere "Plan1", "B5", "Plan2", "C3"
End Sub

'------- Pegar Valor Onde Digitar Onde
Sub GetValueWhereEnterWhere ( oSheet$, oCel$, oSheett$, oCell$ )
'	Example Of Use: GetValueWhereEnterWhere "Plan1", "B5", "Plan2", "C3"
	oValue = ThisComponent.Sheets.GetByName( oSheet ).getCellRangeByName( oCel ).Value
	ThisComponent.Sheets.GetByName( oSheett ).getCellRangeByName( oCell ).Value = oValue
End sub

tiofrigs.ods (9.0 KB)

Só para completar o assunto: para texto e formula…

'------- Pegar Texto Onde Digitar Onde
Sub GetStringWhereEnterWhere ( oSheet$, oCel$, oSheett$, oCell$ )
'	Example Of Use: GetStringWhereEnterWhere "Plan1", "B5", "Plan2", "C3"
	oString = ThisComponent.Sheets.GetByName( oSheet ).getCellRangeByName( oCel ).String
	ThisComponent.Sheets.GetByName( oSheett ).getCellRangeByName( oCell ).String = oString
End sub


'------- Pegar Formula Onde Digitar Onde
Sub GetFormulaWhereEnterWhere ( oSheet$, oCel$, oSheett$, oCell$ )
'	Example Of Use: GetFormuleWhereEnterWhere "Plan1", "B5", "Plan2", "C3"
	oFormula = ThisComponent.Sheets.GetByName( oSheet ).getCellRangeByName( oCel ).Formula
	ThisComponent.Sheets.GetByName( oSheett ).getCellRangeByName( oCell ).Formula = oFormula
End sub

Bom dia sr Schiavinatto,
Obrigado pela ajuda.
Se puder solicitar mais um pouco, estou tentando inserir a macro (porém, como minha experiência é próxima de zero, estou com um pouco de dificuldade).
Poderia corrigir?
Quero copiar o resultado da fórmula contida na célula “A18” da Planilha “Cadastro” na célula “A2” da Planilha “PACIENTES”

REM ***** BASIC *****

Sub Programando_Gravar

GlobalScope.BasicLibraries.loadLibrary("LibreMacro")

InsertRows("PACIENTES", 2, 1)

	**GetValueWhereEnterWhere  "PACIENTES", "A2", "Cadastro", "A18"**

** oString = ThisComponent.Sheets.GetByName( oSheet ).getCellRangeByName( oCel ).String**
** ThisComponent.Sheets.GetByName( oSheett ).getCellRangeByName( oCell ).String = oString**

Cell("PACIENTES", "B2").String = Cell("Cadastro", "B18").String
Cell("PACIENTES", "C2").String = Cell("Cadastro", "C18").String
Cell("PACIENTES", "D2").String = Cell("Cadastro", "D18").String
Cell("PACIENTES", "E2").String = Cell("Cadastro", "E18").String
Cell("PACIENTES", "F2").String = Cell("Cadastro", "F18").String
Cell("PACIENTES", "G2").String = Cell("Cadastro", "G18").String
Cell("PACIENTES", "H2").String = Cell("Cadastro", "H18").String
Cell("PACIENTES", "I2").String = Cell("Cadastro", "I18").String
Cell("PACIENTES", "J2").String = Cell("Cadastro", "J18").String
Cell("PACIENTES", "K2").String = Cell("Cadastro", "K18").String
Cell("PACIENTES", "L2").String = Cell("Cadastro", "L18").String
Cell("PACIENTES", "M2").String = Cell("Cadastro", "M18").String
Cell("PACIENTES", "N2").String = Cell("Cadastro", "N18").String
Cell("PACIENTES", "O2").String = Cell("Cadastro", "O18").String
Cell("PACIENTES", "P2").String = Cell("Cadastro", "P18").String
Cell("PACIENTES", "Q2").String = Cell("Cadastro", "Q18").String

SortAsc("PACIENTES", "A2:Q10000", 17)

end sub

É de onde para onde…

Sub Teste
	GetValueWhereEnterWhere "Cadastro", "A18", "PACIENTES", "A2"
End Sub

Obs… A macro ```
GetValueWhereEnterWhere
tem que constar no arquivo…

1 Like

Muito obrigado!