0

我正在尝试通过 VBA 将模板(-.dotm 文件)附加到 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 下,如有必要,可以使用不同的名称(例如,如果您在不同的计算机上有两个用户共享,您可能会看到 /Volumes/Users 和 /Volumes/Users-1 .问题是你也可以使用“Volumes:Users:A500579:PublicWordTemplate:Core.dotm”来指定模板,你实际上不能使用等效的“Volumes:Users-1:”字符串。所以现在我不' t 查看如何指定 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 回答