0

テンプレート (-.dotm ファイル) を VBA 経由で Word 2011 (Mac) ドキュメントに添付しようとしています。テンプレートは、Windows ネットワーク ドライブ ( file://BF-02004/Users/A500579/PublicWordTemplate) にあります。この共有にはまったく制限がなく、Mac - Finder で閲覧することも問題ありません。

私の問題は、このネットワーク共有をVBA コードから直接アドレス指定するにはどうすればよいですか?

これは、私が何を意味するかを示すために試みたコードの抜粋です。

Option Explicit

'these are options which I have tried
Private Const MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE As String = "smb://BF-02004/Users/A500579/PublicWordTemplate/Core.dotm"
'Private Const MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE As String = "smb:BF-02004:Users:A500579:PublicWordTemplate:Core.dotm"
'Private Const MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE As String = "BF-02004:Users:A500579:PublicWordTemplate:Core.dotm"
'Private Const MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE As String = "BF-02004/Users/A500579/PublicWordTemplate/Core.dotm"

Public Sub LoadTemplate()

    'check if file exists (the boolean function FileExists() is defined in another module)
    If FileExists(MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE) Then
        ActiveDocument.AttachedTemplate = MAC_STYLE_RELATIVE_NETWORK_PATH_TO_TEMPLATE
    Else
        MsgBox "The template was NOT found!"
        Exit Sub
    End If

End Sub

Word 2011 - VBA アプリケーション内から Windows 共有に対処する正しい方法は何ですか?

4

1 に答える 1

1

これはコメントである必要がありますが、長すぎてコードがあります:

これまでのところ、機能する構文を見つけることができませんでした。

AFAICS wdDialogToolsTemplates 組み込みダイアログの .Template プロパティを使用する必要があります。実際に必要なのは、共有名から下に向かってコロンで区切られたパスです。たとえば、あなたの例では、コードを何かに基づいて作成する必要があると思いますこのような:

Sub AttachT()
Dim d As Word.Dialog
Set d = Word.Dialogs(wdDialogToolsTemplates)
d.Template = "Users:A500579:PublicWordTemplate:Core.dotm"
d.Execute
Set d = Nothing
End Sub

(Word の組み込みダイアログ ボックスの遅延バインド プロパティに慣れていない場合は、ここでもう少し詳しく知ることができます。VB エディターのオブジェクト ブラウザーには表示されません)。

これに関する問題は、明らかに、「ユーザー」共有を持つ複数のサーバーが存在する可能性があることです。AFAICS、Mac では、Windows/SMB 共有はデフォルトで /Volumes の下にマウントされ、必要に応じて別の名前が付けられます (たとえば、異なるコンピューターに 2 つのユーザー共有がある場合、/Volumes/Users と /Volumes/Users-1 が表示される場合があります)。 . 問題は、"Volumes:Users:A500579:PublicWordTemplate:Core.dotm" を使用してテンプレートを指定することもできますが、実際には同等の "Volumes:Users-1:" 文字列を使用できないことです。 Users-1 が参照する SMB 共有を指定する方法を確認してください。共有の名前を変更する必要があると思います (または、より実用的には、追加の共有名を指定する必要があります)。または、mount コマンドなどを使用して、Mac ファイル構造の別の場所に共有をマウントできる場合があります。しかし、これまで見てきたことから、最後のオプションがうまくいくとは確信していません。

最初に有望に見えた別の方法は、最初に ChangeFileOpenDirectory を使用し、次にテンプレートを指定することでした

ActiveDocument.AttachedTemplate = "Core.dotm"

またはそのようなもの。使うことができます

ChangeFileOpenDirectory "Users:"

Mac が /Volumes/Users にマウントした共有に変更するには

ChangeFileOpenDirectory "Users:"
ActiveDocument.AttachedTemplate = "Core.dotm"

BF-02004:Users:Core.dotm では機能する可能性がありますが、次の (および私が試したいくつかのバリエーション) は機能しないようです。

ChangeFileOpenDirectory "Users:"
ActiveDocument.AttachedTemplate = "A500579:PublicWordTemplate:Core.dotm"

また

' The first line works
ChangeFileOpenDirectory "Users:A500579:PublicWordTemplate:"
ActiveDocument.AttachedTemplate = "Core.dotm"
于 2014-03-26T11:45:34.187 に答える