Python in Excel, What about it?

Python no Excel
Python on Excel

In August 2023, we were surprised by the announcement of Python integration in a future Excel update. Wow! This is a big deal, and we need to pay attention to what it means, especially to dispel any misconceptions that may be arising around it.

As a prelude, I must clarify that everything I write here is entirely based on my opinion and public information about the subject, with references at the end of the text.

Python vs. VBA

Every fiber of my being, especially those dedicated to programming, wants Python to be the replacement for VBA. Let me be clear on this point: it’s not. There is nothing, or very little for VBA application programmers in this Python integration with Excel, at least from what has been presented.

So, dear VBA programmer, don’t get too excited. The most that will happen is that you can avoid creating UDFs in VBA by solving everything within a concise Python block in a Excel cell.

Who is Python in Excel for?

It’s essential to make this clear: nobody (except Microsoft and the Office product team) has any idea at the moment who the target audience for this implementation is.

If I had to guess, I would consider two fronts:

  1. The Office team is targeting the data mining/data science audience, in other words, data analysts. When tools like Excel, the Powers*, Tableau, among others, start struggling with large amounts of data, these professionals often turn to Python. There’s much to unfold here, as it’s not just Python but rather a micro-ecosystem created to serve this audience.
  2. Since Python is becoming an “almost” universally used programming language, there might be an intention to provide a familiar environment for the market and its users. What makes me a bit skeptical of this theory is that they already tried this with ScriptLab using JavaScript, another widely-used language. Who knows?

But again, for whom is Python in Excel?

I’ve tried to answer this above, as have many other Excel enthusiasts. The fact is, we don’t yet know where this will lead.

Microsoft is an expert at making mistakes, but when they get it right, it’s for real. There are plenty of examples, and Excel itself is one, as it has carried this company for decades.

That’s why it’s too early to predict the acceptance this feature will have. Until about five years ago, Power Query and Power BI were beyond the reach of mere formula writers. Today, they are here to stay.

As an enthusiast, I’m excited. As a programmer, I’m skeptical. As an Excel user, I’m indifferent. As a data analyst, I’m intrigued.

Is Python in Excel for me?

This one’s easy. No. But why?

I am a programmer; I like code. More than that, I like creative freedom. Opening VBA gives me such a great sense of creativity that it’s impossible to compare to the Python prompt within a cell replacing it.

Additionally, Python doesn’t run locally. This is where the success or perhaps the failure of this implementation lies: security, the cancer that has plagued the Office suite for decades that Microsoft wants to get rid of at all costs.

In summary…

It’s early; we can’t conclude much, especially from my perspective as a programmer who likes VBA and has little experience with the Data Science side of Excel.

I am indeed very curious to hear what Power BI colleagues have to say about this. For those of you needing a Python tip, we’re here.

Stay tuned for the next chapters. I have a feeling that Python in Excel is here to stay.


StackOverFlow 2023 Survey:
Python in Excel by Leila Gharani:
Microsoft Excel just got Python by Fireship:

Automating Tasks: A Comparison of VBA and PowerShell

When it comes to automating tasks, developers have different options at their disposal. Two popular languages for automation are VBA (Visual Basic for Applications) and PowerShell. While they serve similar purposes, they have different approaches and strengths. In this article, we’ll explore the similarities and differences between VBA and PowerShell, along with code examples in each language.

VBA: Automation within Applications

VBA is widely used within applications like Excel, Word, and Access to automate tasks and extend functionality. It provides a familiar environment for developers who work with Microsoft Office applications. Here’s an example of using VBA to copy files from a source folder to a destination folder based on a search criteria:

Sub CopyFiles()
    Dim sourcePath As String
    Dim destinationPath As String
    Dim fileName As String
    Dim file As Variant
    ' Set the source and destination paths
    sourcePath = "C:\SourceFolder"
    destinationPath = "C:\DestinationFolder"
    ' Loop through files in the source folder
    fileName = Dir(sourcePath & "\*.txt") ' Search criteria for .txt files
    Do While fileName <> ""
        ' Copy each file to the destination folder
        FileCopy sourcePath & "\" & fileName, destinationPath & "\" & fileName
        ' Get the next file
        fileName = Dir()
    ' Display a message when done
    MsgBox "Files copied successfully!"
End Sub

function to retrieve a list of files in the source folder that match the specified search criteria (in this case, “*.txt” for text files). We then loop through each file and use the FileCopy statement to copy it to the destination folder.

PowerShell: Powerful Command-Line Automation

PowerShell is a command-line scripting language developed by Microsoft, focusing on system administration and automation tasks. It provides a vast range of cmdlets and access to the .NET Framework for powerful automation capabilities. Here’s an example of using PowerShell to copy files from a source folder to a destination folder based on a search criteria:

$sourcePath = "C:\SourceFolder"
$destinationPath = "C:\DestinationFolder"

# Get files that match the search criteria
$files = Get-ChildItem -Path $sourcePath -Filter "*.txt" -Recurse

# Copy files to the destination folder
foreach ($file in $files) {
    Copy-Item -Path $file.FullName -Destination $destinationPath

# Display a message when done
Write-Host "Files copied successfully!"

In this PowerShell code snippet, we specify the source and destination paths and use the Get-ChildItem cmdlet to retrieve a list of files in the source folder that match the specified search criteria (in this case, “*.txt” for text files). We then loop through each file and use the Copy-Item cmdlet to copy it to the destination folder.

Comparing VBA and PowerShell

Now let’s compare VBA and PowerShell in terms of their strengths and areas of focus:

  1. Application Integration: VBA excels at automating tasks within Microsoft Office applications. It provides direct access to the object model of the host application, allowing for fine-grained control and manipulation. PowerShell, on the other hand, focuses more on system-level automation and administration, with a broader range of cmdlets for managing operating systems, services, and resources.
  2. Syntax and Structure: VBA uses a procedural approach, with subroutines and functions, making it well-suited for application-specific tasks. PowerShell follows a command-based approach, using cmdlets and functions to perform operations. It embraces an object-oriented mindset, treating everything as an object with properties and methods.
  3. Integration and Extensibility: VBA seamlessly integrates with Microsoft Office applications and their object models. It provides easy access to application-specific functionality. PowerShell, on the other hand, offers extensive integration with the .NET Framework and third-party libraries. It supports importing modules and leveraging existing libraries to extend functionality.
  4. System Administration: PowerShell shines in system administration tasks. It provides powerful cmdlets for managing operating systems, Active Directory, SQL Server, Exchange Server, and more. PowerShell’s scripting capabilities and access to the .NET Framework make it an ideal choice for automating complex system operations and performing administrative tasks.

When it comes to copying files based on search criteria, PowerShell has a clear advantage. Its Get-ChildItem cmdlet provides robust file filtering capabilities, allowing you to search for files based on various criteria such as file extension, name, size, and more. PowerShell’s concise syntax and extensive set of cmdlets make it a powerful tool for efficiently managing and manipulating files.

In conclusion, both VBA and PowerShell are valuable tools for automation, but they have different areas of focus. VBA is ideal for automating tasks within Microsoft Office applications, while PowerShell excels at system administration, command-line automation, and file management. Choose the language that best suits your automation needs and leverage its strengths to streamline your workflows and increase productivity.

Selenium Basic – What is it?

Selenium is a powerful and versatile open-source library that provides a comprehensive set of tools for automating web browsers. While it is commonly used for web testing, it has gained immense popularity in the field of web scraping as well. Here are some reasons why Selenium is considered a great choice for web scraping:

  1. Dynamic Content Handling: Many modern websites heavily rely on dynamic content that is loaded or generated through JavaScript. Traditional scraping techniques, such as parsing HTML with libraries like BeautifulSoup, may not be able to handle such dynamic content. Selenium, on the other hand, excels at handling dynamic content. It can interact with the web page in real-time, execute JavaScript code, and retrieve the fully rendered content, allowing you to scrape data from websites that heavily rely on JavaScript.
  2. Browser Automation: Selenium allows you to automate web browsers, replicating human-like interactions with web pages. This means you can navigate through multiple pages, click buttons, fill out forms, submit data, and perform various other actions programmatically. By mimicking human interactions, Selenium enables you to access data that might be hidden behind login screens, interact with AJAX-based functionalities, or traverse paginated content. This level of automation makes Selenium a powerful tool for scraping complex websites.
  3. Cross-Browser Support: Selenium supports multiple web browsers such as Chrome, Firefox, Safari, and Internet Explorer, among others. This cross-browser support allows you to choose the browser that best suits your scraping needs or replicate the behavior of your target audience. You can write your scraping code once and easily switch between different browsers, ensuring compatibility and flexibility.
  4. Robust Element Selection: Selenium provides a wide range of methods to locate elements on a web page, including by ID, class, XPath, CSS selectors, and more. This flexibility allows you to precisely target the elements you want to scrape. Additionally, Selenium offers advanced element interaction methods, enabling you to extract text, attribute values, perform clicks, and handle various user interactions effortlessly.
  5. Ecosystem and Community Support: Selenium has a vast and active community of developers, which means you can find plenty of resources, tutorials, and discussions to help you with your web scraping projects. The extensive ecosystem around Selenium includes frameworks, wrappers, and third-party tools that provide additional features and make web scraping more efficient.

While Selenium is a powerful tool for web scraping, it’s worth noting that it may be overkill for simple scraping tasks. If the website you’re targeting doesn’t heavily rely on dynamic content or JavaScript, or if you only need to extract static HTML data, using a lightweight library like BeautifulSoup or Requests may be more appropriate. However, when faced with complex scraping scenarios or dynamic websites, Selenium’s capabilities shine, making it a top choice for many web scraping projects.

Here is an example of Selenium Basic with VBA:

Sub AutomateWebTask()
    Dim driver As New SeleniumWrapper.WebDriver
    Dim element As SeleniumWrapper.WebElement
    ' Open a browser and navigate to a website
    driver.Start "chrome", ""
    driver.Get "/"
    ' Find an input field by its ID and enter text
    Set element = driver.FindElementById("inputField")
    element.SendKeys "Hello, Selenium!"
    ' Find a button by its XPath and click it
    Set element = driver.FindElementByXPath("//button[@id='submitButton']")
    ' Wait for the page to load
    driver.Wait 5000
    ' Extract the text from a specific element
    Set element = driver.FindElementByClassName("resultText")
    MsgBox "Result: " & element.Text
    ' Close the browser
End Sub

Please make sure you have the Selenium Basic library installed and referenced in your VBA project before running this code. You can find the Selenium Basic library and installation instructions on its official GitHub page:

Tecnologia e Programação