Usando a função libreOffice Calc em macro

0

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

Primeiro, onde posso encontrar documentação real? Eu só encontrei muito poucos exemplos que não ajudaram muito e o Guia BASIC também é bastante sucinto.

E principalmente (se primeiro não responder a ela), como você pode ver no exemplo abaixo, estou tentando usar CONCATENATE dentro da macro. Qual é uma função perfeitamente funcional dentro da planilha. Mas 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

    
por Puck 26.01.2016 / 11:35

1 resposta

3

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

Para o propósito aqui, seria muito mais simples usar apenas o operador de concatenação Básico de & . Assim:

Case "0"
    binOut = binOut & "0000"
    
por 26.01.2016 / 15:47