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.