Utilizar UDFs (User-Defined Functions) com xlwings#

DFs, ou User-Defined Functions, são funções personalizadas que criamos em Python, que se podem usar diretamente nas células do Excel como se fossem funções nativas do Excel. Isto é extremamente poderoso, pois permite estender a funcionalidade do Excel com a capacidade e flexibilidade do Python.

Neste passo temos de fazer um ficheiro excel que aceita macros (extensão .xlsm) e dar autorização ao excel para interagir com o add-in do XLwings.

Configurar o add-in do xlwings#

Antes de mais nada, precisamos de ter a certeza de que temos o add-in xlwings instalado no Excel (consulte a secção anterior sobre como instalá-lo).

Criar um ficheiro excel com a extensão .xlms#

O primeiro passo é criar um ficheiro com a extensão .xlms no directório onde estão a trabalhar. Para isso só têm que quando gravarem o ficheiro excel gravar com a opção “Gravar como” e seleccionar a extensão correcta.

Colocar a aba de “Programador” nas opções do excel#

Vamos depois colocar a aba de programador no friso para mais facilmente termos acesso às macros e respectivas definições

(Podem clicar com o botão direito do rato e abrir numa nova aba para ver em grande)

Autorizar interligação com o Add-in do XLWings#

Programador => Visual Basic => Tools => References => Visto no “XLWings”

Agora que a ligação com o excel já está feita e ultrapassamos a parte mais complicada vamos proceder com a criação dsa funções python e a leitura das mesmas no excel.

Criar ficheiro .py com o mesmo nome do ficheiro excel#

Para o excel reconhecer as nossas funções elas terão de estar num ficheiro .py com o mesmo nome do ficheiro excel onde estamos a trabalhar.

Vamos proceder à criação desse ficheiro através do vscode.

Criar uma Função Python#

Vamos começar por criar uma função Python simples. Por exemplo, uma função que calcula o quadrado de um número e outra que faz a soma de dois números. Todos os inputs serão dados no excel.

import xlwings as xw

@xw.func
def square(number):
    return number**2

@xw.func
def plus(n1, n2):
    return n1 + n2

Reparemos no decorador @xw.func acima da definição da função. Isto é necessário para que o xlwings saiba que esta função deve expor-se ao Excel como uma UDF.

Expor a Função ao Excel#

Para que a função esteja disponível no Excel devemos importa-las através da opção “Import functions” do Add-in do xlwings.

!()[https://s3.eu-west-3.amazonaws.com/ds4finance.repository/tutoriais/xlwings_portuguese/udf.png]

Podemos ver aqui na imagem a opção que temos de escolher para importar as funções python e posteriormente na célula H2 corri a opção “plus” com os dos números que pretendemos adicionar.

Como podem ver tudo o que vamos falando em termos de python e respectivo código pode seer usado também no excel, e num mundo profissional onde maioritariamente se trabalha em excel XLWings é extremamente útil para automatizarmos tarefas.