Автоматически выполнять макрос в слове VBA - PullRequest
0 голосов
/ 01 октября 2019

У меня есть макрос, который выполняется при открытии документа word. Проблема в том, что пустой объект word (без файла / документа) открывается макрос работает нормально при открытии файла / документа. Если новый текстовый документ открыл файл / документ, то макрос не работает и показывает сообщение об ошибке.

Мой макрос: Module1 -> normal.dot

Dim varData As Variant
Dim font_type() As String
Dim text As String
Dim font_name As Variant

varData = Array("?", "[[", "\tag", "$", "()", "|", "\label", "\ce", "insert_eq")

For Each font_name In varData
    Selection.HomeKey Unit:=wdStory
    Call ClearFindSettings
    Selection.Find.text = font_name
    If Selection.Find.Execute = True Then
          Selection.HomeKey Unit:=wdStory
          'Selection.TypeParagraph
          Selection.MoveUp
          alert_msg = "The '" & font_name & "' Text Present in doc"
          alert_msg_grp = alert_msg_grp & vbNewLine & alert_msg
    End If
 Next
 Call Error_alert(alert_msg_grp)
 End Sub

ThisDocument.

Private Sub Document_Open()
Call AutoExec
End Sub

Private Sub Document_New()
Call AutoExec
End Sub

Сообщение об ошибке:

    Runtime Error '91'
    Selection.HomeKey Unit:=wdStory

Может кто-нибудь помочь с этим.

1 Ответ

1 голос
/ 01 октября 2019

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

If (Application.Documents.Count > 0) Then
Dim varData As Variant
Dim font_type() As String
Dim text As String
Dim font_name As Variant

varData = Array("?", "[[", "\tag", "$", "()", "|", "\label", "\ce", "insert_eq")

For Each font_name In varData
    Selection.HomeKey Unit:=wdStory
    Call ClearFindSettings
    Selection.Find.text = font_name
    If Selection.Find.Execute = True Then
      Selection.HomeKey Unit:=wdStory
      'Selection.TypeParagraph
      Selection.MoveUp
      alert_msg = "The '" & font_name & "' Text Present in doc"
      alert_msg_grp = alert_msg_grp & vbNewLine & alert_msg
    End If
 Next
 Call Error_alert(alert_msg_grp)
END IF
 End Sub
...