Usando a função libreOffice Calc na macro

0

Estou tentando criar uma função macro básica no calc para executar uma conversão hexadecimal em binária com mais de 10 bits. Mas eu tenho muitos problemas.

Primeiro, onde posso encontrar a documentação real? Encontrei apenas poucos exemplos que não ajudaram muito e o guia BASIC também é bastante sucinto.

E principalmente (se o primeiro não responder), como você pode ver no exemplo abaixo, estou tentando usar CONCATENATEdentro da macro. Qual é uma função que funciona perfeitamente dentro da planilha. Mas eu recebo a seguinte mensagem de erro:

Sub-procedure or function procedure not defined.

Então, como usar essa função dentro da macro, é possível?

Aqui está o código da minha macro:

Function HEX2BINREAL(hexIn as string) as string

   n = len(hexIn)
   Dim binOut as string
   binOut = ""

   For i = 1 to n
      ActChar = Mid(hexIn,i,1)
      Select Case ActChar
        Case "0"
            binOut = CONCATENATE(binOut,"0000")
        Case "1"
            binOut = CONCATENATE(binOut,"0001")
        Case "2"
            binOut = CONCATENATE(binOut,"0010")
        Case "3"
            binOut = CONCATENATE(binOut,"0011")
        Case "4"
            binOut = CONCATENATE(binOut,"0100")
        Case "5"
            binOut = CONCATENATE(binOut,"0101")
        Case "6"
            binOut = CONCATENATE(binOut,"0110")
        Case "7"
            binOut = CONCATENATE(binOut,"0111")
        Case "8"
            binOut = CONCATENATE(binOut,"1000")
        Case "9"
            binOut = CONCATENATE(binOut,"1001")
        Case "a", "A"
            binOut = CONCATENATE(binOut,"1010")
        Case "b", "B"
            binOut = CONCATENATE(binOut,"1011")
        Case "c", "C"
            binOut = CONCATENATE(binOut,"1100")
        Case "d", "D"
            binOut = CONCATENATE(binOut,"1101")
        Case "e", "E"
            binOut = CONCATENATE(binOut,"1110")
        Case "f", "F"
            binOut = CONCATENATE(binOut,"1111")
        End Select
   next i
HEX2BINREAL = binOut
end Function

obrigado

Puck
fonte
Vejo que você concede CONCATENATE em todas as maiúsculas no seu texto, mas o possui no caso apropriado no seu exemplo de código. Funciona em maiúsculas na folha? Você já tentou all-caps em sua função?
Zeiss Ikon
caso não pareça importante, na planilha, ele se converte em maj automaticamente. Tentou substituir por CONCATENATE, mesmo resultado.
Puck
O subconjunto BASIC que eles usam tem uma importfunção? Caso isso aconteça, você precisará importar a definição de função Concatenate para sua função antes de poder usá-la.
Zeiss Ikon

Respostas:

3

O idioma da macro não tem acesso às funções da planilha, a menos que você gaste várias linhas carregando a que deseja.

Para o objetivo aqui, seria muito mais simples usar apenas o operador de concatenação Básica de &. Igual a:

Case "0"
    binOut = binOut & "0000"
Lyrl
fonte
Obrigado, isso resolve meu problema específico. Você poderia entrar em mais detalhes sobre o uso das funções da planilha em uma macro?
Puck
Algumas funções estão disponíveis através da API. No wiki: Computando com intervalos de células e a documentação da API . Não tenho certeza de como usar operações de planilha não suportadas por.computeFunction
Lyrl
1
Veja também a seção de documentos macro de Andrew Pitonyak6.28. Use FunctionAccess to call Calc Functions .
Jim K