b PORTABLE XLS PRINTER for Microsoft Excel

What's new   Download   Home  Ads

This utility is a COM add-in or add-in (.xla) programmed in Microsoft® Visual Basic® for Application (VBA) that makes it possible to generate an XLS (or XLSX) file from a sheet in an another XL file opened in Microsoft Excel® that summarizes only the printable data in the set print area. The generated XLS and the original look the same in print as they do on the screen, but the generated XLS is more portable, because it contains only the data necessary to produce the print-out. And, like any other file, you can email or transfer it using a CD, DVD, USB drive, or network connection. It is also easy to share, because you can view it on any computer or cloud computing environment with a recent XLS viewer installed, even if the same Excel version used to create the original XL file is unavailable, avoiding the complications of formulas, filters, links, macros, etc. This solution also avoids the unnecessary sending of copyrighted data or data hidden or filtered in the original XL file that may require privacy as a whole.

The impression here to an Excel Portable XLS is similar to printing to an Adobe PDF, but with some advantages:

- Programs able to visualize basic XLS files are more widely installed than PDF viewers.

- It's most faithful to the original, because it is still a spreadsheet.

- Because it is spreadsheet, it allows greater editing flexibility if any changes or additions are necessary such as formatting, including text and formulas before being forwarded to a recipient who, in turn, can make changes and return with response data that can be captured to the original XL. All this made by user interface or by VBA code. See the pictures below.

It consists of only one file, the PortblXLSPrinter.dll, which is about 190 kb in size and can be installed automatically using one of the installer package files available below to download. Except for the DLL, no other setting is saved in the Microsoft Windows® Register. Its setting is saved in PortblXLSPrinter.ini and PortblXLSPrinter.xlam files that are created and maintained by the proper utility. You also can uninstall it automatically using the same installer file, leaving no mess on your Windows Register or disc.

Following items in this page:




VBA fPortblXLSPrinter() Function

VBA fGetVersion() Function


- The utility makes a special copy of a sheet, capturing only the data necessary to produce an identical printout or screen visualization of the original sheet.

- By capturing only printable data, file size is reduced, and the transmission of confidential data, formulas, links, or authorial secrets is avoided. The print setup options for the special sheet will be the same as those of the original sheet, in terms of paper size, orientation, header, footer, margins, etc. These are the great advantages of this utility compared to the direct solutions offered by Excel for sending sheets or print areas by email. For more information on these solutions, see Ron de Bruin’s excellent study:

- The created sheet can optionally be protected against changes by a default password created randomly in each run or by a password that you enter.

- The utility saves the workbook of the created sheet as an XLS or XLSX file, here referred to only as a Portable XLS, regardless of which is the extension.

- It supports to open a previously saved Portable XLS and add new sheets. Thus, a single Portable XLS may contain printable views of all the sheets of one or more workbooks.

- In one run, it is possible to print any of the sheets in any of the workbooks that are already open in Excel, including macro sheets, to one or more Portable XLS files.

- When saving an Excel Portable XLS, you can immediately compress it to a zip file, further reducing the file size to port.

- When saving an Excel Portable XLS, you can immediately attach the file or its zipped version to an email message that you can verify and then send by the Microsoft Outlook® or another default email recipient in Windows. It can compose the email with default data or captures address, subject and text message in the active cell and its adjacent, looking down or right. These cells should normally be outside the defined print area that goes as attachment.

- When saving a Portable XLS, you can immediately save it as a web page (htm, html). Thus, your original XL, with all the possible complexities introduced by formulas, filters, links, macros, etc., can be shown on the web just as if it were printed or viewed on your computer screen. Sending only the data necessary for this view saves bandwidth and avoids sending unnecessary data that may be copyrighted, hidden, or filtered in the original XL file that require privacy as a whole.

- A Portable XLS is useful whenever the data necessary to produce an identical printed view is only a portion of the full content of the sheet, particularly when sending sheets containing autofilters that filter thousands of lines down to some tens of lines, or when there is information in the original that is confidential. in parts or when seen all in all.

- In sending a file for direct printing, a Portable XLS has a great advantage in size over sending a larger graphical (e.g. TIF) file format or a print (e.g. PRN) file format. Also, the recipient can still use Excel to view the sheet and edit it, if it is not protected, and print it on different types of printers.

- After installed, the utility is called from the Excel File Menu > Portable XLS Printer... Command or, in Excel 2007, from Office Button > Portable Printer Split Button > Portable XLS Printer Command or, in Excel 2010 or 2013, from File Menu > File Printer Tab > Portable XLS Printer Command.

- Can be called directly from any VBA code through the fPortblXLSPrinter() and fGetVersion() functions. See, soon below the pictures, a detail description of these functions and examples of the VBA applications that use them

- Occupies less than 190 Kb when installed


Tested in Excel for Windows, versions 2000, 2002(XP), 2003, 2007, 2010 (32-bit), 2013 (32-bit), 2016 (32-bit), and 2019 (32-bit) in MSI-based and Click-To-Run installations of Office 365™ cloud-based services.


Download the English version now

You also can download from this mirror site

Last update: 03/25/2022 - 826.1kb

Freeware based in this License Agreement

Note: The above link downloads the installer and uninstaller package programmed in VBA in a XLS duly converted to EXE by the XLtoEXE to make the installation easier for macro and Windows laymen; however, if you're an expert and for some reason prefer an installer and uninstaller package in open ZIP format, click here. With this zip package you can install it in three ways: (1) Simply initiate the Install.exe that loads the same XLS in Excel without macro alert; (2) Extract the entire package to a folder and initiate the XLS, enabling the macros in Excel and using 123 as password, or (3) Install the DLL manually.



VBA fPortblXLSPrinter() Function:

The Portable XLS Printer can be called directly from any VBA code through the fPortblXLSPrinter() function that has these 11 optional arguments:

1 - ToPrintWorkbookName¹ as String (Optional. Default active workbook name). The name of a workbook already opened in Excel.

2 - ToPrintSheetName as String (Optional. Default active sheet name). The name of a sheet in ToPrintWorkbookName workbook to print to the Portable XLS file.

3 - ToPrintSheetPasswrd as String (Optional. Default=""). Sheet password if ToPrintSheetName sheet is protected.

4 - PortblSavePath as String (Optional. Default the same path of ToPrintWorkbookName). The path where the Portable XLS file is or will be saved.

5 - PortblSaveName as String (Optional. Default an auto name based in the name of ToPrintWorkbookName). The name for the Portable XLS file.

6 - PortblSheetPasswrd as String (Optional. Default password created randomly). The password if the sheet in Portable XLS needs to be protected against changes. If “” is passed, it will not be protected.

7 - ZipPortbl As Boolean (Optional. Default=False). If True, the Portable XLS file created or updated will be immediately compressed to a zip file.

8 - AfterDoneEmail¹ As String (Optional. Default=0). A command setting the action to be performed after the Portable XLS file is ready and saved. It must be one of these four options:

     "0" - To issue success alert.

     "1" - Not to issue success alert.

     "An email address" - To send the Portable XLS file attached to an email to the given address (Can be more than one address separated by ";").

     "SaveAs" - To show the Excel Standard Save As dialog box making it possible to save the Portable XLS file in other formats supported by Excel as html, txt, pdf, etc..

9 - EmailSubj As String (Optional). The subject of the email to send with the Portable XLS file as an attachment.

10 - EmailMsg As String (Optional). The message of the email to send with the Portable XLS file as an attachment.

11 - SndKeys As String (Optional). Enables sending keys to the email message window as a last action. For example:

     "{PAUSE 1}{VK_162}{VK 83}{VK 162}{PAUSE 2}{ESC}" - Pauses, sends the CTRL+S keys, makes another pause, and finally sends ESC to the Outlook message window to save, close, and send the message as is to the Inbox or Draft.

     "{PAUSE 1}{VK_164}{VK 83}{VK 164}" - Pauses and sends the ALT+S keys to the Outlook message window to save, close, and send the message as is to the Outbox. Note: In these two examples, the ALT and CTRL control keys are those on the left side of the keyboard, as those on the right side can be customized for other functions, for example, on virtual machines. To understand the syntax of the key sending codes, see here and here.

¹ If you inform only the ToPrintWorkbookName argument and the AfterDoneEmail argument passing email, the file you informed in ToPrintWorkbookName will be sent immediately as is. This allows changes to be made to a portable XLS already made before sending it as an attachment to informed email. That is, fPortblXLSPrinter() can be called twice in a three-step process. In the first step, it is called to print a complex XL on a portable XLS. In the second step, changes are made in the portable XLS such as formatting, including text and formulas as it remains a spreadsheet, a big advantage over print to PDF. And finally, in the third step, it is called again to send it by email with the changes you made.


1 - The code below calls the fPortblXLSPrinter() function to print active sheet to YourPortable.xlsx file in C:\YourTest folder.

Sub YourSub()
    Dim ObjToVBA As Object, fRet as Long
    Set ObjToVBA = Application.COMAddIns("AddInPortblXLSPrinter.ExcelDesigner").Object
    fRet = ObjToVBA.fPortblXLSPrinter(, , , "C:\YourTest", "YourPortable.xlsx")
End Sub

2 - The code below calls the fPortblXLSPrinter() function such as the utility is called from the menu command.

Sub YourSub2()
    Dim ObjToVBA As Object, fRet as Long
    Set ObjToVBA = Application.COMAddIns("AddInPortblXLSPrinter.ExcelDesigner").Object
    fRet = ObjToVBA.fPortblXLSPrinter
End Sub

The fPortblXLSPrinter() function can give the following returns:

fRet = -1 (Cancelled by the user).
fRet = 0 (Successfully executed).
fRet = 1 (Failure: When trying to unprotect the sheet with the informed password in Excel versions earlier than 2007).
fRet = 2 (Failure: When trying to unprotect the spreadsheet with the informed password in any Excel version).
fRet = 3 (Failure: When trying to send email).
fRet = 101 (Failure: Workbook informed by ToPrintWorkbookName argument or no active workbook found containing sheet to print).
fRet = 102 (Failure: Sheet informed by ToPrintSheetName argument or no active sheet found to print).
fRet = 103 (Failure: The password was not informed by ToPrintSheetPasswrd argument and the sheet to print is protected).
fRet = 104 (Failure: Disk folder informed by PortblSavePath argument not found).
fRet = 105 (Failure: The filename informed by PortblSaveName argument is not valid, maybe the extension).
fRet = 106 (Failure: Option informed by AfterDoneEmail argument is invalid, maybe invalid email address).
fRet = 107 (Failure VBA code without definition, but with alert).

VBA fGetVersion() Function:

This function makes possible to get the number of the installed version from any VBA code, returning a number in the 0.0.0 format.


1 - The code below calls the fGetVersion() function to verify that the installed version is updated.

Sub YourSub()
    On Error Resume Next
    Dim ObjToVBA As Object, vCallVerOld As Variant
    Set ObjToVBA = Application.COMAddIns("AddInPortblXLSPrinter.ExcelDesigner").Object
    vCallVerOld = ObjToVBA.fGetVersion
    If Err.Number <> 0 Then
        MsgBox "The 'Portable XLS Printer for Excel' not found!"
        vCallVerOld = Split(vCallVerOld, ".")
        vCallVerOld = vCallVerOld(0) * 10 ^ 6 + vCallVerOld(1) * 10 ^ 3 + vCallVerOld(2)
        If vCallVerOld < 1002001 Then MsgBox "The 'Portable XLS Printer for Excel' found is old!"
    End If
End Sub

About Add-in (.xla):

Temporarily unavailable.


More information







Visitas acumuladas em todas as páginas:
Visitas hoje só nesta página: