Как я могу использовать относительный путь для доступа к строительному блоку в моем макросе? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу использовать строительный блок таблицы, который будет храниться в .dotm, который является папкой STARTUP пользователя. Однако я знаю только, как написать макрос, используя абсолютный путь к файлу, но это не сработает, потому что .dotm будет общим.

В файле .dotm также будет храниться строительный блок под названием «таблица образцов», и все будет отформатировано. Я знаю, что могу перестроить таблицу с помощью VBA, но ширина никогда не получается так, как мне нужно, поэтому я пытаюсь использовать строительные блоки.

Application.Templates( _
    "C:\Users\MYUSER\AppData\Roaming\Microsoft\Word\STARTUP\Templates.dotm" _
    ).BuildingBlockEnries("sample_table").Insert Where:=Selection. _
    Range, RichTest:=True

1 Ответ

0 голосов
/ 27 июня 2019

Есть несколько способов получить путь к папке Word STARTUP в домашнем каталоге пользователя (путь указан относительно каждого уникального пользователя).

Возможно, самый простой способ для вашей цели:

Application.Templates(Application.Options.DefaultFilePath(wdStartupPath) & "\" & _
    "Templates.dotm").BuildingBlockEntries("Sample_Table").Insert _
    Where:=Selection.Range, RichText:=True

Однако могут быть случаи, когда вы хотите просмотреть все глобальные надстройки и основывать свои решения на найденном.Ниже приведен пример кода для этого:

Sub FindAddin()
    Dim WordAddin As Word.AddIn
    Dim i As Long
    For i = 1 To Application.AddIns.Count
        If Application.AddIns(i).Name = "Templates.dotm" Then
            Set WordAddin = Application.AddIns(i)
            Exit For
        End If
    Next
    If WordAddin Is Nothing Then Exit Sub
    Application.Templates(WordAddin.path & "\" & _
        WordAddin.Name).BuildingBlockEntries("Sample_Table").Insert _
        Where:=Selection.Range, RichText:=True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...