Как я могу поймать пустые записи с помощью макроса Word (VBA)? - PullRequest
0 голосов
/ 17 июня 2020

Я создал макрос слова, теперь большая часть его работает как надо. Единственная оставшаяся у меня проблема заключается в том, что он читает пустые записи из Excel, а затем не может использовать их в макросе (таким образом, попадая в бесконечный l oop). Может ли кто-нибудь помочь мне перехватить и удалить пустые записи в начале макроса или хотя бы скрыть их, чтобы они не учитывались? Заранее спасибо.

Это мой сокращенный код:

Sub SerienbriefOneDoc()
'
' SerienbriefOneDoc Makro
'
'
Dim Dateiname As String
Dim LetzterRec As Integer
Dim countLoop As Integer
Application.ScreenUpdating = True
Application.Visible = False

countLoop = 1

'userform creation and opening
SetName:
'code ... creation ...


With ActiveDocument.MailMerge

'################################################ --> Progressbar

      Dim RecordCount As Integer
      Dim i As Integer, percent As Integer, ActiveDoc As Integer, 
ActivePercent As Integer
      Dim widthUpdate As Double, j As Double
      UserForm2.Label1.BackColor = &HFF00&
      percent = 100
      UserForm2.Label1.Width = 0
      RecordCount = .DataSource.RecordCount
      ActiveDoc = .DataSource.ActiveRecord
      i = 1


     Do

'################################################ --> CheckBox check

    '############### --> declaration Arrays & Var for check

    Dim TempName As String
    Dim AddName As String
    Dim f As Integer
    Dim k As Integer
    Dim q As Integer

    Dim arrayCount(128) As Variant
    Dim arrayBool(128) As Boolean

    AddName = ""

    For q = 1 To ColumnCount
        arrayCount(q) = 0
    Next q


    '############### --> Safe Chheckbox-Content in Array


    '############### --> Arraysortierung und Auf AddName Speichern


    '############### --> Name - Text / Date


    '############### --> check if Addname has content

    'Path = "C:\Users\<Username>\Documents"
    Path = "C:\Users\MattiaSchule\Documents"
    AddName = "testDoc"


    If AddName = "" Then
        Unload UserForm3
        UserForm3.Hide
        If countLoop >= 3 Then
            MsgBox "Überprüfe ob alle werte in der Datenquelle stimmen, falls 
eine Zeile leer ist, die aber trotzdem eingebunden wird lösche diese."
            Exit Sub
        End If
        countLoop = countLoop + 1
        GoTo SetName
    End If

    If Right(AddName, 1) = "_" Then
        AddName = Left(AddName, Len(AddName) - 1)
    End If


    'Prueft ob es mehrere Seiten fuer den Serienbrief gibt
        If .DataSource.ActiveRecord > 0 Then
        'zaehlt die Anzahl Datensaetz in der Spalte "Name"
            If RecordCount <> "0" Then
                .Destination = wdSendToNewDocument
                .SuppressBlankLines = True
                'prueft ob es das Verzeichnis gibt.
                If Dir(Path, vbDirectory) <> "" Then
                Else
                    'Fehlermeldung falls das Verzeichniss nicht existiert
                    MsgBox "Verzeichnis existiert nicht"
                End If
                With .DataSource
                    .FirstRecord = .ActiveRecord
                    .LastRecord = .ActiveRecord
                    'erstellt eine Variable mit dem Pfad und dem Namen
                    dname = Path & "\" & AddName & ".pdf"
                End With
                .Execute Pause:=False
                'benennt die Datei und aendert das Dateiformat auf PDF
                ActiveDocument.SaveAs2 FileName:=dname, 
FileFormat:=wdFormatPDF
                'schliesst das Fenster
                ActiveDocument.Close False
            End If
        End If
        'prueft ob es noch eine Seite gibt im Serienbrief
        If .DataSource.ActiveRecord < LetzterRec Then
            'nimmt die naechste Seite des Serienbriefes
            .DataSource.ActiveRecord = wdNextRecord
        Else
            'wenn es keine Seite im Serienbrief mehr gibt wird die Schleife 
beendet
            Exit Do
        End If


        i = i + 1
        j = i * percent / RecordCount
        widthUpdate = j * 2
        ActivePercent = j
        UserForm2.Label1.Width = widthUpdate
        UserForm2.Label2.Caption = ActivePercent & "% Complete"

        UserForm2.Show (0)
        Load UserForm2
        DoEvents
        UserForm2.Repaint
     Loop
    Unload UserForm2
End With

 Application.Visible = True
 Application.StatusBar = False
 Application.DisplayStatusBar = sBar
 Application.ScreenUpdating = True

End Sub

Это изображение для иллюстрации пустых записей

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