Programming & Consulting

What are some of the things I can expect if I hire GabrAria to develop my application?

Platforms Supported

Jack Webb

In a hurry?

Get just the facts from Joe Friday.

excel 2003 icon
Excel 2003
excel 2007 icon
Excel 2007
excel 2010 icon
Excel 2010
excel 2013 icon
Excel 2013


access 2003 icon
Access 2003
access 2007 icon
Access 2007
access 2010 icon
Access 2010
access 2013 icon
Access 2013


Appropriate Architecture

Excel Application with Blended Structures

When you use Excel for your development platform you need to be aware that Excel has some features and aspects that make it easy for a novice to very quickly develop fairly powerful applications.  Unfortunately those same features and aspects also mean that whoever is doing the development can overlook some of the fundamentals of good application architecture. 

In one Excel workbook we can combine the user interface, where people are going to key in data or make decisions about the analysis, with the data itself, and on top of that we mix in the business logic being implemented.  The "business logic" is either the formulas that get used, the validations that get used to make sure the data is good or the VBA code that gets attached to the workbook as a VBA Project. VBA is the language in which Excel "macros" are written and most novice macro developers attach the macros to the workbook where the macros get used.  If we were to draw our application's architecture it might look something like the Venn diagram to the right.

Loosely Coupled Architecture Graphic

An "all-in-one" architecture may serve us well if our application remains very simple and our deployment very limited.   And I have used this architecture when it was a sensible solution to a client's needs.  However, if the application is going to be deployed across many desktops, or there will be a need to distribute updates to code or make changes to the user interface that would cause a user to need to port data from an old version of a workbook to a newer, updated version then I will recommend we move to a more advanced architecture where the user interface, the business logic and the data access & storage are more loosely coupled.  Depicted graphically that architecture might look like the figure on the left

Advanced Solution Architecture

A loosely coupled architecture allows us to work on either the user interface or the business logic and deploy updates to these application components without encountering tremendous difficulties in porting data into the updated workbooks.   This would enable us to create a solution that we could depict in the graphic to the right. This is a very robust architecture which would allow maximum flexibility and scalability as the business grows.

An Attractive Interface that is Context Sensitive

If your project does require an advanced architecture, it would be presented to the user via a custom ribbon tab driven by an Excel add-in.  Here are a couple of examples of custom tabs from custom Excel applications GabrAria has developed for customers.

Custom Application Tab 1
Custom Application Tab 2

The application enables and disables the various custom controls based on what type of workbook is active.  Certain controls should only be enabled when specific types of workbooks related to the application are open.  This means that the user can open any type of workbook and the application will automatically disable any buttons that should not work with a "generic" workbook.  This keeps a user from accidentally performing an action he shouldn't and inadvertently making unintended changes to his workbook.

Well-Documented and Well-Structured Code

One of the challenges that comes with supporting code over the long term is that as the programmers who wrote the code move on to new projects, they quickly forget code they, themselves, wrote.  In the professional IT world this means rigorous documenting protocols are usually in place in a company's IT department.  In order to make sure your project is easy to support over both the near term and the long term, time is taken to create a good documentation trail within the project.   To start with, each module in the project contains summary information about the module and its contents.

Module Header Thumbnail
click to view a standard GabrAria module header

An additional level of documentation is standard procedure - each subroutine within every module has a documentation header that summarizes what the procedure does, describes any inbound arguments or output and contains a change history documenting major edits to the code.

Standard Procedure Header Thumbnail
click to view a standard GabrAria procedure header

Furthermore, I code using a variation on the Hungarian Convention pioneered by Charles Simonyi and later refined for use in VB/VBA by Gregory Reddick.  In order to help anyone else tasked with reading the code in a GabrAria-developed application, every application includes a module that details the naming conventions used throughout the application, including the conventions used for defining names in Excel workbooks.

Link to General Code Notes
click to view GabrAria's general coding notes module

With GabrAria you can rest assured that your code is well structured and well documented making ongoing support much easier and more economical.

Application Management Tools

Application Logging

GabrAria applications are structured so that it is easy to add logging tools to the project.  The application logging tools that can be included are:

  • Error Logging (standard in all GabrAria applications)
  • Performance Logging
  • Start Up Logging
  • Upload Logging
  • Download Logging

Applications can maintain two sets of logs.  One set of logs pertains to just one specific user's machine.  This allows quick troubleshooting if one specific user is encountering issues that other users are not.  The other set of logs pertains to all users of the application.  If there are issues or bugs that seem to occur only sporadically, having the ability to collect data from many users increases the ability to analyze and diagnose what may be causing the issue.  And if the client only wants logging activated for certain key users, an admin panel can be added to allow an administrator to turn logging on or off for a particular user.

Screenshot of Application Logging Menu
click to view logging menu
Screenshot of Error Log
click to view an error log

Managing Multiple Deployment or Environmental Silos

Three Environments Graphic

If your application is large and needs to go through a standard three phased deployment process, GabrAria has experience in working in such a complex setting.

Administrators and key power users can be given the ability to flip from one environment to another quickly and easily allow Subject Matter Experts and Power Users that form the testing team to test updated code quickly and efficiently.   Note that this does not just mean changing code bases; changing the environmental setting also changes template versions being used, paths to key data input files and for key data output files.

Screenshot of Error Log
click to view an Environmental Control Menu

Version Management for Application Templates

If the application will use custom templates, GabrAria can structure the application such that new versions of the templates do not need to be pushed out to users.  When they create a new workbook based on the template, the application will check the user's version against a centrally stored version control file to see if a new version needs to be uploaded.  Furthermore, if the user opens a workbook that was created from an older version of a template - one that is no longer compatible with the current version of the application, the user is warned and the application offers to transfer the data over to a newer, updated version of the template if possible. Note that if one is developing in a multiple environments setting, the template versions can be different for the Dev., QA & Production environment.

Screenshot of Template Management Dialog
click to view the Template Management Dialog

In summary, whether the solution you need is a modest half-day to two-day project, or if it is a full-blown application that requires some advanced features and design, GabrAria has the experience and know-how to develop a professional, high-quality, easy-to-support application.


Sometimes, instead of having someone else do the actual coding, clients simply need some input regarding workbook design or application design or architecture.  For budgetary reasons or other concerns the client prefers to do the implementation in-house.  If that is the case, then GabrAria is willing to go through your project with you and offer recommendations and insights that will help you build a better solution using your own company's resources.