Что является эквивалентом этого кода для MacOS Excel? - PullRequest
1 голос
/ 26 марта 2019

Может кто-нибудь посоветовать эквивалентный код для использования в Excel для Mac , который приведет к тому же результату, что и в Windows ниже?

Path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
ActiveWorkbook.SaveAs Path & "CAD DATA.xlsx"

1 Ответ

2 голосов
/ 26 марта 2019

Используйте что-то вроде следующей функции

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

...