Microsoft Excel

Ron de Bruin
Excel Automation

Microsoft MVP Program

Test if it is a Mac or a Windows Machine

More information about testing the Excel version or Excel language you can find on this page : Mac Excel version and Mac Office language settings

You can use conditional compiler constants to test the Operating system or test if you run a 32 or 64 bit version of Office.

The macro below will test the Operating system, you can replace the msgbox line with your code or Macro call.

Sub WINorMAC_1()
    'Test the conditional compiler constant #Mac
    #If Mac Then
    'I am a Mac
        MsgBox "Call your Mac_Macro"
    'I am Windows
        MsgBox "Call Windows_Macro"
    #End If
End Sub

Office 2011 for the Mac is always 32 bit and Office 2016 for the Mac can be 32 or 64 bit, all builds 15.26 and later are exclusively 64-bit. So every Mac Office 2016 install that is up to date is 64 bit.

Below you can find a test macro and three UDF functions that you can use to test the Operating system, test if you run a 32 or 64 bit version of Office and give you the Excel version number.

Sub GetInfo()
    MsgBox "You are using a Mac: " & IsMac
    MsgBox "Your Office install is 64 Bit: " & Is64BitOffice
    MsgBox "Your Excel version is: " & Excelversion
End Sub

Function IsMac() As Boolean
#If Mac Then
    IsMac = True
#End If
End Function

Function Is64BitOffice() As Boolean
#If Win64 Then
    Is64BitOffice = True
#End If
End Function

Function Excelversion() As Double
'Win Excel versions are always a whole number (15)
'Mac Excel versions show also the number of the update (15.29)
    Excelversion = Val(Application.Version)
End Function

With the three functions above it is easy to test what you want in your VBA projects.


New MAC_OFFICE_VERSION conditional compiler in Office 2016

In Mac Office 2016 they add a new conditional compiler constant named MAC_OFFICE_VERSION. In most cases you can test the Application.Version(>=15) if you want like I show you on this page:
Mac Excel version and Mac Office language settings

But if you want to avoid compile errors with for example ribbon macro callbacks in Excel 2011(this not compile for example in 2011: control As IRibbonControl) or use VBA functions that are new in 2016 like AppleScriptTask and GrantAccessToMultipleFiles, you can add the ribbon macro callbacks or the new VBA functions in between the two code lines below in your code module.


Put your macro callbacks or code here

#End If