Макрос Excel перестает генерировать документы Word после 9 строк - PullRequest
0 голосов
/ 29 августа 2018

Я сделал хороший файл Excel с несколькими (почти одинаковыми) макросами. Цель состоит в том, чтобы заполнить открытый шаблон Word, заполнить закладки и сохранить каждый отдельный документ с предопределенными полями в имени файла. Работает как шарм ... но не идет дальше 10-й строки моего файла Excel. Все 12 макросов имеют одинаковую проблему, в основном макрос одинаков, только поля различны.

VBA, который у меня сейчас есть, таков:

Option Explicit

Sub Akkoordverklaring()

  Dim lonLaatsteRij As Long
  Dim rngData As Range
  Dim strVoornaam As String, strAchternaam As String, strSlber As String
  Dim c As Range

With Sheets("Cijferlijst")
    lonLaatsteRij = .Cells(Rows.Count, "A").End(xlUp).Row
    Set rngData = .Range(.Cells(2, 1), .Cells(lonLaatsteRij, 1))
End With

  For Each c In rngData
    strVoornaam = c.Value
    strAchternaam = c.Offset(0, 1).Value
    strSlber = c.Offset(0, 12).Value
    Call maakWordDocument(strVoornaam, strAchternaam, strSlber)
  Next c

End Sub

Private Sub maakWordDocument(strVoornaam As String, strAchternaam As String, strSlber As String)

    'maak een verwijzing naar de Microsoft Word 16.0 Object Library!!

    Dim wordApp As Object, WordDoc As Object

    On Error Resume Next

    'kijk of word al open staat
    Set wordApp = GetObject("", "Word.Application")
    'open word
    If wordApp Is Nothing Then
      'If Not open, open Word Application
      Set wordApp = CreateObject("Word.Application")
    End If
    'toon word (of niet, dan op false)
    wordApp.Visible = False
    'open het 'bron'-bestand
    Set WordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "Formulieren\Akkoordverklaring.docx")

    'bladwijzers invullen
    Call InvullenBladwijzer(wordApp, "voornaam", strVoornaam)
    Call InvullenBladwijzer(wordApp, "achternaam", strAchternaam)
    Call InvullenBladwijzer(wordApp, "slber", strSlber)

    'bestand opslaan en alles netjes afsluiten
    wordApp.DisplayAlerts = False
    WordDoc.SaveAs Filename:=ThisWorkbook.Path & "Akkoordverklaring\Akkoordverklaring " & strVoornaam & Space(1) & strAchternaam, FileFormat:=wdFormatDocumentDefault
    WordDoc.Close
    wordApp.Quit
    Set WordDoc = Nothing
    Set wordApp = Nothing
    'wordApp.DisplayAlerts = True

    'On Error GoTo 0


End Sub


Sub InvullenBladwijzer(wordApp As Object, strBladwijzer As String, strTekst As String)

  'tekst invullen in relevante strBladwijzer
  wordApp.Selection.Goto What:=wdGoToBookmark, Name:=strBladwijzer
  wordApp.Selection.TypeText strTekst

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Поскольку я не программист, я просто знаю, как читать некоторые VBA. Некоторые пользователи здесь также помогли мне с VBA выше ( Excel: изменить действие VBA с того же листа на другой лист )

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