Слово «объект» остается «ничем» при его создании (код ошибки 429: компонент ActiveX не может создать объект) - PullRequest
0 голосов
/ 28 июня 2019

Я не понимаю, почему objWord остается равным ничего , даже если я Set objWord = CreateObject(« Word.Application »)

Ниже полный код:

Sub Publipostage()
Dim bCreatedWordInstance As Boolean
Dim objWord As Word.Application
Dim objMMMD As Word.Document
Dim EmployeeName As String
Dim cDir As String
Dim r As Long
Dim ThisFileName As String
Dim Direction As String
Dim Prenom As String
Dim Compteur As Integer

Compteur = 0

LastRow = Sheets("1 Aux été").Range("E" & Rows.Count).End(xlUp).Row
r = 2
For r = 2 To LastRow
If Cells(r, 24).Value <> "X" Then GoTo nextrow

Compteur = Compteur + 1

EmployeeName = Sheets("1 Aux été").Cells(r, 5).Value
Prenom = Sheets("1 Aux été").Cells(r, 6).Value
Direction = Sheets("1 Aux été").Cells(r, 1).Value

' Parametrage fichiers
Const WTempName = "Lettre Aux été.docx" 'This is the 07/10 Word Templates name,  Change as req'd
Dim NewFileName As String
NewFileName = Direction & " - " & EmployeeName & " " & Prenom & ".docx" 'This is the New 07/10 Word Documents File Name, Change as req'd"

' Récuperation des Directions
cDir = ActiveWorkbook.Path + "\" 'A modifier si besoin
ThisFileName = ThisWorkbook.Name

On Error Resume Next

' Creation de l'instance word
bCreatedWordInstance = False
Set objWord = GetObject(, "Word.Application")

If objWord Is Nothing Then
  Err.Clear
  Set objWord = CreateObject("Word.Application")
  bCreatedWordInstance = True
End If

If objWord Is Nothing Then
MsgBox "Could not start Word"
Err.Clear
On Error GoTo 0
Exit Sub
End If

' Laisser Word gerer les erreurs
On Error GoTo 0

' Mettre Oui si vous souhaitez voir le Word durant ça creation
objWord.Visible = False

'Ouvre le template word
Set objMMMD = objWord.Documents.Open(cDir + WTempName)
objMMMD.Activate

'On join les bonnes datas aux bon fichiers
On Error GoTo FermerWordProcess

With objMMMD
.MailMerge.OpenDataSource Name:=cDir + ThisFileName, sqlstatement:="SELECT *  FROM `1 Aux été$`"   ' Set this as required

With objMMMD.MailMerge  'Avec le document Actif :
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
  .FirstRecord = r - 1
  .LastRecord = r - 1
  .ActiveRecord = r - 1
End With
.Execute Pause:=False
End With
End With

' On enregistre le nouveau fichier

objWord.ActiveDocument.SaveAs cDir + NewFileName


' On ferme le doc
objMMMD.Close SaveChanges:=wdDoNotSaveChanges
Set objMMMD = Nothing

' On ferme le nouveau document
If bCreatedWordInstance Then
objWord.Quit
End If

0:
Set objWord = Nothing
Cells(r, 24).Value = Now
nextrow:

Next r

FermerWordProcess:
Call Kill_Word

If Compteur = 0 Then

MsgBox "Avez vous bien selectionné des lignes a publiposter ?", vbCritical
End

End If

End Sub

При удалении On Error Resume Next я получил код ошибки 429: компонент ActiveX не может создать объект

Для этого я установил: Set objWord = New Word.Application Но теперь ошибки не отображаются, но известно падение слова.

Когда я использую средства отладки, я вижу, что objMMMD = Удаленный сервер не существует или недоступен .

Я предполагаю, что ошибка здесь objMMMD:

.MailMerge.OpenDataSource Name:=cDir + ThisFileName, sqlstatement:="SELECT *  FROM `1 Aux été$`"   ' Set this as required

Эта строка генерирует код ошибки: Автоматизация ошибок + удаленная процедура вызова Echec и 462 Удаленный сервер не существует или недоступен.

Примечание : Даже если я попытаюсь вручную связать Excel с .docx, сбой Word ..

Как я могу решить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...