Я пытаюсь создать сценарии в Excel и Word, которые создают документы Word из строк в Excel. Я основываю документы Word на шаблоне dotm. Все работало нормально (и до сих пор работает) с форматом файла 'dotx', но как только я использую Macro-Enabled, я получаю 5981 ошибку времени выполнения приложения или объектную ошибку.
Я провел исследование в Интернете и попробовал все исправления, включив включение макросов, надежных расположений и доверенных документов в Word. Я пробовал DoEvent, прежде чем пытаться получить доступ. Мне нужно получить доступ к файлу 'dotm', так как в Word есть макросы, которые мне нужно запустить при открытии, чтобы отформатировать документ .
Может ли кто-нибудь ПОЖАЛУЙСТА помочь мне? У меня нет опыта в VBA, и я достигаю конца своей темы с этим.
Set objword = GetObject(, "Word.Application")
If objword Is Nothing Then
Set objword = CreateObject("Word.Application")
End If
On Error GoTo 0
Set objDoc = objword.Documents.Add("C:\Users\OMITTED FOR PRIVACY\Test Report.dotm")
Результаты ...
Ожидается: документы Word созданы и отформатированы
Фактически: ошибка времени выполнения '5981': ошибка приложения или объекта
Обновлено
Код из Test Report.dotm
файла:
Sub conditionalFormat()
Dim oCell As Word.Cell
Dim oColumn As Word.Column
'First set of tables
For intI = 2 To 5
Set oColumn = ActiveDocument.Tables(intI).Range.Columns(3)
For Each oCell In oColumn.Cells
If IsNumeric(Left(oCell.Range.Text, Len(oCell.Range.Text) - 2)) Then
If Val(oCell.Range.Text) < 55 Then
oCell.Shading.ForegroundPatternColor = wdColorRed
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
ElseIf Val(oCell.Range.Text) > 55 And Val(oCell.Range.Text) < 75 Then
oCell.Shading.ForegroundPatternColor = wdColorLightOrange
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
ElseIf Val(oCell.Range.Text) > 75 Then
oCell.Shading.ForegroundPatternColor = wdColorSeaGreen
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
End If
End If
Next
Next intI
'Analysis set of tables
For intI = 8 To 28 Step 3
Set oColumn = ActiveDocument.Tables(intI).Range.Columns(4)
For Each oCell In oColumn.Cells
If IsNumeric(Left(oCell.Range.Text, Len(oCell.Range.Text) - 2)) Then
If Val(oCell.Range.Text) < 33.3 Then
oCell.Shading.ForegroundPatternColor = wdColorRed
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
ElseIf Val(oCell.Range.Text) > 33.3 And Val(oCell.Range.Text) < 66.6 Then
oCell.Shading.ForegroundPatternColor = wdColorLightOrange
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
ElseIf Val(oCell.Range.Text) > 66.6 Then
oCell.Shading.ForegroundPatternColor = wdColorSeaGreen
oCell.Range.Font.TextColor = wdColorWhite
oCell.Range.Font.Bold = True
oCell.Range.InsertAfter Text:="%"
End If
End If
Next
Next intI
End Sub