-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b1e3b97
Showing
24 changed files
with
1,041 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
name: Build mkdocs | ||
on: | ||
push: | ||
branches: | ||
- "main" | ||
workflow_dispatch: | ||
jobs: | ||
upload: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code to workspace | ||
uses: actions/checkout@v4 | ||
- name: MkDocs builder | ||
uses: moonpathbg/mkdocs_builder@latest | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Obsidian files | ||
docs/.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"yaml.schemas": { | ||
"https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml" | ||
}, | ||
"yaml.customTags": [ | ||
"!ENV scalar", | ||
"!ENV sequence", | ||
"tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg", | ||
"tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji", | ||
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format" | ||
] | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
authors: | ||
jeroendevr: | ||
name: Jeroen de Vries | ||
description: Me | ||
avatar: https://avatars.githubusercontent.com/jeroendevr |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Blog | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
--- | ||
authors: | ||
- jeroendevr | ||
date: 2023-02-15 | ||
--- | ||
|
||
# Overview of Excel Development tools | ||
|
||
When working with Excel at some point it becomes easier to do you work with additional tools. While most of the work that is done within excel can be done within a plethora of other application and programming languages it is actively used. Within Europe it has a market share of over 90% in the corporate and governmental environment. No wonder there are some many tools created around microsoft's Excel application. In this article I'll summarize all the tools around Excel for developers and users that involve some kind of programming. And I'll try to group them within distinct categories. | ||
|
||
I'll start listing the technologies as close to Excel as possible and expand outwards. | ||
|
||
## Microsoft Excel | ||
### Don't use additional tools 😉 | ||
Perhaps not the first item you would expect but I list this option here as I have fallen into the trap of thinking "Using technology x we can solve this problem easily" and similar thoughts along those lines. When working in a team, make sure the additional learning your colleagues have to do and investment have to make to learn the new tool along with your solution that's created within it. When using it for a one time project or your team agrees upon using other solutions a choice can be made of the technologies listed below. Otherwise you can learn about more advanced built-in functionality like turning tables or look for an existing formula like the [new Lambda function](https://support.microsoft.com/en-us/office/lambda-function-bd212d27-1cd1-4321-a34a-ccbf254b8b67) that perhaps already does what you do. | ||
|
||
## VBA - VisualBasic for Applications | ||
Perhaps you are familiar with the term Macro or VBA. VBA is a programming language that is provided within Excel. It can be used to automate nearly every interaction. Because it is delivered with Excel it does not require any setup or installation not for developers or for user. of a workbook book with VBA code in it. Microsoft calls this a Macro enabled workbook. Excel files have the distinct .xlsm (m for macro) instead of the .xlsx extension. Within some strongly regulated corporate environments this VBA usage does not require a ticket through IT. Making it the first step towards automation. | ||
See the [VBA reference](https://learn.microsoft.com/en-us/office/vba/) for more information. | ||
|
||
### Extending the VBA Editor | ||
While VBA is still supported it's editor is dated from when VisualBasic 6 was released (from 1998)[^1]. That's where Rubberduck and MZ-Tools aim to support the developers with add-in. Because it is a tool only meant for developers and not attached to the workbook itself (but the code is) it means when you share the document to users. The underlying VBA code works and no additional configuration is needed. This is a huge benefit in my opinion. | ||
|
||
|
||
#### Rubberduck | ||
I have used [Rubberduck](https://rubberduckvba.com) extensively. Because of its many features like its Code Explorer making it easy to navigate through your classes and functions and the refactoring tool so you can easily rename your variables or functions. Rubberduck is an open-source project. | ||
 | ||
 | ||
|
||
|
||
#### MZ-Tools | ||
Within the similar domain is the add-in [MZ-tools](https://www.mztools.com). It provides also a sort of code explorer plus many more. MZ-Tools requires a paid license. | ||
 | ||
|
||
## Microsoft Provided Platforms | ||
Besides VBA Microsoft provides some additional platforms as can be seen in this graph on the [Office Scripts Page](https://learn.microsoft.com/en-us/office/dev/scripts/resources/add-ins-differences). | ||
 | ||
|
||
### Office Scripts | ||
[Office Scripts](https://learn.microsoft.com/en-us/office/dev/scripts/overview/excel) are not something for the regular home user as it requires a business license. By using JavaScript or TypeScript you can make scripts similar to VBA. One big benefit is to be able to create workflows using PowerAutomate. A example is a workflow where a excel is routinely updated and sends a mail. Without needing user interaction. Another benefit is that because of the underlying JavaScript language and the way it is implemented the scripts are usable from the webversions as well. | ||
|
||
### COM-Addins | ||
Where Rubberduck and MZ-Tools are COM Add-ins (now developed using the VSTO - Visual Studio Tools for Office). You could create one yourself by using the .NET framework. A frequent used language is the .Net framework is C#. Learn how to create one [here](https://learn.microsoft.com/en-us/visualstudio/vsto/create-vsto-add-ins-for-office-by-using-visual-studio?view=vs-2022). As shown in the graph above, this is mainly meant for developers. In this case a VisualStudio License is needed in order to build the add-in, so a installer can be made to distribute it to the users. Desktop use only. | ||
|
||
### Web add-ins | ||
Last one of the quadrant is the [Web add-ins](https://learn.microsoft.com/en-us/office/dev/add-ins/). It uses webtechnologies like HTML, CSS and Javascript. Microsoft depicts is as a embedded website within your office application. This Webapplication can then interact with the office application. One of the benefits is that is can run on mobile devices and in the case of a multiple end users provides options for a centralized deployment. | ||
|
||
 | ||
|
||
## Expanding outwards | ||
In the options summarized above we looked at only at the platforms provided by Microsoft itself or enhances the interactions within those platforms. Let's look a little bit further and list the possibilities to automate tasks using different platforms. | ||
|
||
## Programming Language specific tools and extensions | ||
The selection for this paragraph is based on the idea that the user or the developer still opens en uses Excel to interact with the workbook. Otherwise I could list many more programming languages and platforms because interacting with Excel files is not the same as working with Excel as an application. | ||
|
||
|
||
### Python | ||
#### xlwings | ||
Even with all the tools to make VBA easier some basic programming features may still lack for example easy version control. One way I have dealt with this is the use of xlwings package. Create python functions as you would regularly do in a separate python file and call those functions from within Excel. This benefits me with | ||
- version control | ||
- freedom of editor as I can choose whatever editor supports python | ||
- extensive use of libraries | ||
- Python has a vast ecosystem of packages with data-analysis, plotting, interactive use and machine learning | ||
|
||
When deploying the package for users, a add-in can be generated for a fee a 1-click installer can be provided as well. | ||
|
||
Even when developing within VBA I found myself using the xlwings package creating unittests (although Rubberduck provides a feature to execute unittests within VBA itself). Small example can be found on the [xlwings blog](https://www.xlwings.org/blog/unittests-for-microsoft-excel) | ||
|
||
Open source and paid license for additional features. | ||
|
||
### .Net using languages | ||
.Net is a framework maintained by Microsoft and mainly used for Microsoft`s specific platforms and apps. For this platform there is a package manager called [NuGet](https://www.nuget.org). Which enables the developer to reuse code created by others within your apps. The following add-ins Query storm and SharpCells can make use of these packages. | ||
|
||
#### C# | ||
[Query Storm](https://querystorm.com) is a add-in that lets you write C# code within Excel. Provides it's own runtime for easier installation for end users. | ||
 | ||
|
||
#### F# | ||
[Sharp cells](https://www.sharpcells.com) is a add-in that lets you write F# code within Excel. Also possible to use .Net libraries and call dll from the excel workbook. As a prerequisite it depends on the .Net SDK which could make it a little bit more difficult to use for non developing users compared to C#. | ||
|
||
 | ||
|
||
|
||
## Other non-excel spreadsheet solutions with a programming possibility | ||
This article was about Excel in specific, however there are some non Excel platforms that seems interesting. | ||
### Google Sheets | ||
The spreadsheet program from Google offers the possibility to create custom functions or connect to other Google services. [Extending Google Sheet documentation](https://developers.google.com/apps-script/guides/sheets) | ||
|
||
### Neptyne | ||
A cloud based, python powered app development platform using a spreadsheet interface. [Neptyne](https://www.neptyne.com) | ||
|
||
|
||
|
||
[^1]: [Wikipedia on VisualBasic 6](https://en.wikipedia.org/wiki/Visual_Basic_(classic)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Contact | ||
|
||
I am available for freelance development, feel free to contact me if you are interested. | ||
|
||
mail; [[email protected]](mailto:[email protected]) | ||
location; Utrecht, The Netherlands | ||
language; Dutch and English |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
title: About | ||
description: Freelance Software developer | ||
--- | ||
# Programming Engineer Website | ||
|
||
A Programming Engineer, a function title I made up myself 😉. It is a amalgamation of Computer Programming and Process Engineering. Mainly to point out that I work within two engineering fields. Currently I work freelance, if you are interested you can contact me. | ||
|
||
## Technologies | ||
|
||
- Python | ||
- VisualBasic (for Applications) (Office Automation) | ||
- TypeScript | ||
- LabView | ||
- Git | ||
- Markdown | ||
|
||
## MaxQ Analytics | ||
Within the domain of Data Engineering and Business Intelligence I work with my colleagues at the [MaxQ analytics](https://www.maxqanalytics.io) team. Here we help businesses gaining insight into their data which leads to fact based decision making. | ||
|
||
## Profiles | ||
- [GitHub](https://github.com/Jeroendevr) | ||
- [LinkedIn](https://www.linkedin.com/in/jeroen-de-vries-014086224) | ||
- [StackOverflow](https://stackoverflow.com/users/4465153/jeroendv) | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Procedure | ||
|
||
My work consist of developing existing software projects as part of a team or solo or starting new projects. | ||
|
||
## Principles | ||
Primary and preferred way of working is as iterative as possible. Reason is to have frequent and small releases so the customer can give early and fast feedback. As I believe in the ideas presented in the [Agile Manifesto](https://agilemanifesto.org) | ||
|
||
### TDD - Test Driven Development | ||
One of my preferred methodologies is applying [Test Driven Development](https://nl.wikipedia.org/wiki/Test-driven_development). Leading to stable and testable software during the entire development process. Even when the project becomes bigger. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Projects | ||
|
||
## Excel Automation | ||
A lot of the projects involve Microsoft Excel in one way or the other, as it is the go-to application on most enterprise systems to do calculations and data analysis. However functionality related to Excel can also be applied to other Office 365 apps like Access and Word. | ||
### Custom Add-In | ||
#### Restructuring datasets | ||
A custom Excel add-in developed for a client. In order to reduce administrative burden, the Add-in provides a restructuring of a large dataset. After restructuring the output could be used directly into it's workflow. Saving the client hours of manual work. | ||
 | ||
|
||
### VBA - VisualBasic for Applications | ||
Although for most 'real' software developers. VisualBasic for applications is not the primary tool of use. However most enterprise environments do use microsoft Excel as their primary data analysis tool. Because of this I have quite some experience in developing so called Macro's to automate repeating tasks especially focused on Excel (While applications like Word or Access are also possible) | ||
|
||
## Hobby Projects | ||
Some open project which I created and you can use or draw inspiration from. | ||
|
||
## Visual Studio Code | ||
### Theme extension | ||
For this editor I have ported a TextMate Theme to Visual Studio Code. This theme is a dark theme so it is easy on the eyes and provides good syntax highlighting on a variety of languages. Which helps debugging programs. | ||
|
||
See [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=Programming-Engineer.birds-of-paradise) and [source](https://github.com/Jeroendevr/birds-of-paradise-vscode) | ||
|
||
Some benefits over the "old" textMate theme include : | ||
- Color Scheme matches complete interface | ||
- Better token definition leading to better readability. (Using more defined lexical tokens) | ||
- Support for Python Docstrings | ||
- Make use of Semantic Highlighting defined within Visual Studio Code (for use of classes and decorators) | ||
|
||
### This Site | ||
Created with [Sphinx](https://www.sphinx-doc.org/en/master/) and the [Markedly](https://myst-parser.readthedocs.io/en/latest/) to simply create a static website based off markdown files too provide speed and simplicity to the writer. If you want to create one yourself see this helpful [blog article](https://www.errbufferoverfl.me/posts/2020/sphinx-blog-part-one/). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
:root { | ||
--md-primary-fg-color: #A55603; | ||
--md-primary-fg-color--light: #E2923D; | ||
--md-primary-fg-color--dark: #90030C; | ||
} | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
site_name: Programming Engineer | ||
site_url: https://programming-engineer.nl | ||
nav: | ||
- About: index.md | ||
- Procedure: procedure.md | ||
- Projects: projects.md | ||
- Contact: contact.md | ||
theme: | ||
name: material | ||
features: | ||
- navigation.instant | ||
palette: | ||
# Palette for dark mode | ||
- scheme: slate | ||
toggle: | ||
icon: material/brightness-4 | ||
name: Switch to light mode | ||
primary: custom | ||
accent: yellow | ||
|
||
# Palette for light mode | ||
- scheme: default | ||
toggle: | ||
icon: material/brightness-7 | ||
name: Switch to dark mode | ||
primary: custom | ||
accent: deep orange | ||
extra_css: | ||
- stylesheets/extra.css | ||
|
||
plugins: | ||
- tags | ||
- blog: | ||
post_url_format: "{slug}" | ||
|
||
markdown_extensions: | ||
- footnotes |
Oops, something went wrong.