Excel 2019 for Mac VBA에서 AppleScript 설치 2

4600 단어 VBAExcelMac

Excel 2019 for Mac VBA에서 AppleScript 설치 2



새해 복 많이 받으세요. 새해도 잘 부탁드립니다.

작년 , VBA에서 AppleScript를 설치하는 방법을 썼습니다.
  • AppleScript 코드 인라인이 다소
  • 만든 AppleScript 파일을 하이퍼 링크로 직접 열 수 없습니다

  • 이번에는 그 문제점을 해결해 나가고 싶습니다.

    AppleScript 코드의 인라인이 다소 어렵습니다.



    AppleScript를 VBA 인라인화하는 웹 앱 AppleScript2VBA을 만들었습니다.



    UTF-8의 AppleScript 파일을 업로드하고 변환하면 Function의 형태로 인라인됩니다.

    인라인화된 스크립트를 텍스트 출력한 것을 실행하는 것으로 자동적으로 ~/Library/Application Scripts/com.microsoft.Excel/에 인스톨 되게 되어 있습니다.

    샘플 코드


    Sub a2vcheck()
    
    Dim root As String
    Dim path1 As String
    Dim appscript As String
    
    root = "/Users/Shared"
    
    path1 = root & Application.PathSeparator & "as2vbaTest3.applescript"
    
    MsgBox (path1)
    
    applescript = FormeA2V3()
    
    Open path1 For Output As #2
        Print #2, applescript
    Close #2
    
    ActiveWorkbook.FollowHyperlink Address:=root
    
    End Sub
    
    'AppleScript2VBA変換コード
    
    Function FormeA2V3() As String
    Dim code As String
    
    code = "set root to (path to home folder) as string" & vbNewLine & "set mkEdir to root & " & ChrW(34) & "Library:Application Scripts:" & ChrW(34) & vbNewLine _
    & "set tgtpath to root & " & ChrW(34) & "Library:Application Scripts:com.microsoft.Excel:" & ChrW(34) & vbNewLine & "set mkas to tgtpath & " & ChrW(34) & "test.applescript" & ChrW(34) & vbNewLine & vbNewLine _
    & "set asval to "
    
    code = code & ChrW(34) & "on lt8(rpath)" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " try" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " set txt to read (rpath) as " & Chr(-32397) & "class utf8" & Chr(-32396) & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " on error number err_num" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " set txt to false" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " end try" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & " return txt as text" & ChrW(34) & "& linefeed & "
    code = code & ChrW(34) & "end lt8" & ChrW(34)
    
    code = code & vbNewLine & "tell application " & ChrW(34) & "Finder" & ChrW(34) & vbNewLine & "if not (exists tgtpath) then" & vbNewLine & "make new folder at mkEdir with properties {name:" & ChrW(34) & "com.microsoft.Excel" & ChrW(34) & "}" & vbNewLine & "end if" & vbNewLine & "end tell" & vbNewLine _
    & vbNewLine & "try" & vbNewLine & "set tfile to open for access file mkas with write permission" & vbNewLine & "set eof of tfile to 0" & vbNewLine & " write asval to tfile" & vbNewLine & "end try" & vbNewLine & vbNewLine & "close access tfile" & vbNewLine & vbNewLine _
    & "tell application " & ChrW(34) & "Finder" & ChrW(34) & vbNewLine & " open tgtpath" & vbNewLine & "end tell"
    
    FormeA2V3 = code
    
    End Function
    

    만든 AppleScript 파일을 직접 하이퍼링크로 열 수 없음



    시행착오한 결과, 먼저 동명의 빈 파일을 작성한 후에 덮어써서 하이퍼링크로 열 수 있게 되었습니다. 충분히 시간을 내야 할 것 같습니다.

    이것은 어디까지나 가정하지만, OS가 인덱스 파일을 만들기 전에 하이퍼링크에서 열 때 오류가 발생하는 것으로 나타났습니다.

    실제 거동



    실제로 구현한 GIF가 여기입니다.



    구현할 때는 사용자에게 경고를 표시하거나 확실히 설명해야 한다고 생각합니다.

    AppleScript2VBA는 MIT License이므로 자유롭게 사용하십시오. 버그가 발생했을 경우는 내 사이트 (으)로부터 연락해 주시면 감사하겠습니다.

    좋은 웹페이지 즐겨찾기