このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

VBA Macscriptについて

発言者:ピング
( Date Tuesday, July 15, 2003 14:19:01 )


任意のフォルダ内の”検索ファイル名”を含むファイルを、指定したフォルダにコピーするスクリプト
set f to choose folder
set fss to choose folder
set fs to MT List Files f name contains "検索ファイル名" with sub folders
tell application "Finder" to duplicate fs to fss

上記について動作は確認できましたが、これをExcel VBAで


Sub test()
Dim f
Dim fs
Dim fss
Dim macSc
    f = MacScript( choose folder)
    fss = MacScript( choose folder)    

    macSc = "MT List Files  """ & f & """ name contains """ & 検索ファイル名 & """ with sub folders"
    fs = MacScript(macSc)

    macSc = "tell application ""finder"" duplicate " & fs & " to """ & fss & """"
    MacScript macSc

End Sub

と、すると動作しません。どうかお知恵を貸していただけないでしょうか?

動作環境は OS 9.2
           Tanaka's OSAX 2.0.1
           Excel 2001

ピング さんからのコメント
( Tuesday, July 15, 2003 14:39:28 )

失礼しました
×   macSc = "tell application ""finder"" duplicate " & fs & " to """ & fss & """"

○    macSc = "tell application ""finder"" duplicate """ & fs & """ to """ & fss & """"

でした。

ピング さんからのコメント
( Tuesday, July 15, 2003 15:16:57 )

それでも、駄目です。
内容が場違いかもしれませんが、
どなたか助言をいただけないでしょうか?

のもと さんからのコメント
( Tuesday, July 15, 2003 16:09:43 )

↓にすると動きます。どこがどうしてダメだったのか考えてみましょう。

Sub test()
    Dim f
    Dim fs
    Dim fss
    Dim macSc
    Dim fname
    
    fname = "検索ファイル名"
    f = MacScript("choose folder as string")
    fss = MacScript("choose folder as string")
    
    macSc = "tell application ""finder"" to duplicate (MT List Files  """ & f & _
        """ name contains """ & fname & _
        """ with sub folders return as file specification) to item """ & fss & """"
    MacScript (macSc)

End Sub


しかし、そもそも1行ずつに分けずに丸ごとMacScriptに渡してしまう方が簡単だと思いますけど

ピング さんからのコメント
( Tuesday, July 15, 2003 17:08:40 )

アドバイスありがとうございます。
駄目だった理由としては、
1.choose folder で as string が指定していなっかった。
2.duplicate で item が抜けていた。
といったところでしょうか?
AppleScript歴8時間の私にはサッパリわからないことばかりで…

のもと さんからのコメント
( Tuesday, July 15, 2003 17:37:35 )

> 駄目だった理由としては、
> 1.choose folder で as string が指定していなっかった。
> 2.duplicate で item が抜けていた。
> といったところでしょうか?

あなたのスクリプトに as string と item を加えれば動きますか?
そうではなく、データ型に対する認識が欠如しているのが原因です。
8時間じゃしかたないですが。