Written by Allen Wyatt (last updated November 9, 2024)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, Word in Microsoft 365, and 2021
Cleveland is creating a couple of macros that need to open a template that may or may not exist on the system. His problem is that the macro needs to run on both Windows and Mac systems, and the two systems store templates in different locations. He wonders if there is a way, in the macro, to test whether it is running on a Windows system or a Mac and set the path to the templates accordingly.
There are two ways you can determine if your macro is running on a Windows or Mac system. One method is to rely on compiler constants. You can find more about these universal constants at this page:
https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/compiler-constants
You access them by using a special variation of the If...Then structure that utilizes a hash mark (#) in front of the keyword. Here's a code snippet that demonstrates how you can do this:
#If Mac Then ' Set your path variable for a Mac system #Else ' Set your path variable for a Windows system #End If
The #If command indicates that a compiler constant is being tested, and Mac is the name of the compiler constant to test. This constant will be True if the macro is running on a Mac system and False if not. Again, you can find more information about compiler constants at the URL previously provided.
The second method to determine the type of system on which your macro is running is to examine the contents of the OperatingSystem property for the System object, in this manner:
If InStr(System.OperatingSystem, "Mac") Then ' Set your path variable for a Mac system Else ' Set your path variable for a Windows system End If
This works because the OperatingSystem property returns a text string that will either be "Macintosh" on a Mac system or contain "Windows" for a Windows system. Note that in this case the hash mark (#) is not required with the If...Then structure because you are not testing a compiler constant.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (11430) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, Word in Microsoft 365, and 2021.
Learning Made Easy! Quickly teach yourself how to format, publish, and share your content using Word 2013. With Step by Step, you set the pace, building and practicing the skills you need, just when you need them! Check out Microsoft Word 2013 Step by Step today!
Word collects a wide range of statistics about your documents, but one of the things it doesn't collect is how many times ...
Discover MoreDo you want to easily jump to the top of a page in your document? You can use the Go To command to make the shift, or you ...
Discover MoreWhen you record a macro, Word very literally records what you do. This includes filling in various settings in dialog ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2024-11-12 19:14:09
Cleveland Thornton
I want to report that the solution provided by Messers Peter Johnson, Michael Avidan (MVP), and Bob Beechey works like a charm and is very elegant. I tried the "#If Mac Then solution," which worked.
I have not tried the" If InStr(System.OperatingSystem, "Mac") Then" solution, but I will.
Thank you all very much for this response. I hope others find it useful, as well.
Cleveland Thornton
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments