Используйте что-то вроде следующей функции
Function GetDesktopPath() As String
#If Mac Then
GetDesktopPath = Mid(MacScript("tell application ""Finder""" & vbLf & "return desktop as alias" & vbLf & "end tell"), 7)
#Else
GetDesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
#End If
End Function
в своем коде, чтобы она работала как на Mac, так и на Windows
Path = GetDesktopPath & Application.PathSeparator
ActiveWorkbook.SaveAs Path & "CAD DATA.xlsx"
Убедитесь, что ActiveWorkbook
действительно то, что вы хотитеиспользовать.Вы, вероятно, намеревались использовать ThisWorkbook
:
ActiveWorkbook
- это книга, которая имеет фокус (находится сверху) во время выполнения этого кода.Это может легко измениться простым щелчком мыши или любым другим вмешательством. ThisWorkbook
- рабочая книга, в которой работает этот код.Это гораздо надежнее, потому что оно никогда не изменяется при любом взаимодействии с пользователем.
① Источник MacScript: http://www.vbaexpress.com/forum/showthread.php?54852-Returning-the-Desktop-Path