Problems with Apple’s sandbox requirements

In Windows Excel 97-and higher and in Mac Excel 2011 you can open files or save files where you want in almost every folder on your system without warnings or requests for permission. But in Mac Office 2016 and higher Microsoft have to deal with Apple’s sandbox requirements. When you use VBA in Mac Excel 2016 or higher that Save or Open files you will notice that it is possible that it will ask you permission to access the file or folder (Grant File Access Prompt), this is because of Apple’s sandbox requirements.This means that when you want to save/open files or check if it exists with VBA code the first time you will be prompted to allow access on the first attempt to access such a folder or file.

How to avoid problems

There are a few places on your Mac that you can use to avoid the prompts and let your code do what it needs to do without user interaction. But these folders are not in a place that a user can easily find so below are some steps that I hope to make it easier for you to access the folder manual if you want.

This is the Root folder on my machine that we use in the examples on this page:
/Users/rondebruin/Library/Group Containers/UBF8T346G9.Office
Note: rondebruin is the user name in this path and I agree that the naming of the folder for Office(UBF8T346G9.Office) is not so nice, but Microsoft do not have control of this name.

The folder above you can use to share data between Office programs or with a third party application, so this location will always work if you want to have read and write access. If you want to have a location only for Excel for example use this path : /Users/rondebruin/Library/Containers/com.microsoft.Excel/Data I not use this location on this example page to be sure that every Office program can access my files if this is needed. To get this Excel path you can also use Environ("HOME") or Environ("CFFIXED_USER_HOME")

Manual create a folder for your Excel files in the Office folder

Follow the steps below :
  • Open a Finder Window
  • Hold the Alt key when you press on Go in the Finder menu bar
  • Click on Library
  • Open the Group Containers folder
  • Open the UBF8T346G9.Office folder
  • Create a Folder inside this folder named MyExcelFolder for example
  • Select this folder

This are three ways to easily open the folder manual :
  • Add it to your Favorites in Finder by dragging it to it.
  • Add it to your Favorites in Finder with the shortcut : cmd Ctrl T
  • Drag the folder to the Desktop with the CMD and Alt key down. You now have a link(alias) to the folder on your desktop so it is easy to find it and open it in the future.

Note
: Adding the folder to your Favorites is my favorite because you see the folder in your open and save dialogs in Excel. Or use this script one time to create a folder for your Office files and create shortcuts to a few important folders, check out this page : Setup your Mac for Mac Office

How to create a folder in the Office folder with VBA code

Below you find a macro and a function that you can use to create a folder if it not exists in the Root folder named : UBF8T346G9.Office In the macro you see one line that call the function and the argument is the name of the folder that you want to create. Change "MyProject" to something else to create another folder.

How do I open files with VBA code in the folder MyProject?

Below you find a macro and a function that you can use to open a file in the sub folder MyProject of the UBF8T346G9.Office folder. In the macro you see one line that call the function and there are two arguments, the folder name and file name.

Note : You can also add code in the macro to test if the file is already open, I use that also in the code example in this section : Browse to a file or files in a sub folder of the Office folder.

How do I save a file with VBA code in the MyProject folder ?

The first macro create a file of only the activesheet and save it in a folder named MyProject and the second macro save a copy of the file in a folder named Backup. Both are sub folders of your UBF8T346G9.Office folder.

Note : Both macros use the custom function CreateFolderinMacOffice that you find in the first section of this page.

Browse to a file or files in a sub folder of the Office folder

In the example below it opens a browse dialog with a folder folder named : MyProject from your UBF8T346G9.Office folder and you are only able to select xlsx files. Below the macro you find a list of format names and you can read how you can change it. Note: Do not forget to copy the bIsBookOpen function in your module, you find it below the macro.

Other File formats

In the macro you see this code line that say which file format you can select (xlsx).

FileFormat = "{""org.openxmlformats.spreadsheetml.sheet""}"

If you want more then one format you can use this to be able to also select xls files.

FileFormat = "{""org.openxmlformats.spreadsheetml.sheet"",""com.microsoft.Excel.xls""}"

This is a list of a few formats that you can use :
  • xls : com.microsoft.Excel.xls
  • xlsx : org.openxmlformats.spreadsheetml.sheet
  • xlsm : org.openxmlformats.spreadsheetml.sheet.macroenabled
  • xlsb : com.microsoft.Excel.sheet.binary.macroenabled
  • csv : public.comma-separated-values-text
  • doc : com.microsoft.word.doc
  • docx : org.openxmlformats.wordprocessingml.document
  • docm : org.openxmlformats.wordprocessingml.document.macroenabled
  • ppt : com.microsoft.powerpoint.ppt
  • pptx : org.openxmlformats.presentationml.presentation
  • pptm : org.openxmlformats.presentationml.presentation.macroenabled
  • txt : public.plain-text
  • pdf : com.adobe.pdf
  • jpg : public.jpeg
  • png : public.png
  • QIF : com.apple.traditional-mac-plain-text
  • htm : public.html
23/03/2024
Web design by Will Woodgate