Thema Datum  Von Nutzer Rating
Antwort
Rot HILFE! Word Makro vom Vorgänger erweitern
16.01.2014 11:40:36 Pete
NotSolved

Ansicht des Beitrags:
Von:
Pete
Datum:
16.01.2014 11:40:36
Views:
1865
Rating: Antwort:
  Ja
Thema:
HILFE! Word Makro vom Vorgänger erweitern

Hallo liebes VBA-Forum,

 

ich hab folgendes Problem, ich habe ein bestehendes VBA Makro für den Seriendruck eines Worddokumentes mit einem Zähler, der sich entsprechend der Anzahl der Druckexemplare hochzählt.

Jetzt muss ich das Dokument aber noch dahingehend abändern, dass beim Vorschriftentyp "Verpackungsvorschrift" die Anzahl Exemplare ignoriert werden und die Inhaltprüfung des eingegeben Schlüssels ignoriert werden.

 

...sprich die Eingabe desChargenschlüssel kann beliebig aus Zahlen oder Buchstaben oder sogar beidem bestehen, da bei der Auswahl der Verpackungsvorschrift das hochzählen nicht notwendig ist.

Wer kann mir hierbei helfen?

 

Private Const TitelHV = "Drucken der HV mit Produkt-Nr."
Private Const TitelVV = "Drucken der Verpackungsvorschrift mit Produkt-Nr."
Private Const SchluesselAuswahl = "Auswahl des Chargenschlüssels"
Private Const TitelAuswahl = "Auswahl des Chargentyps"
Private Const Zeiger = "@Nummer"

Private Projekt As String

Sub HV_Druck()
  Dim dlg As Dialog, ChargenNummer As String, ChargenBuchstabe As String, Charge As String, ChargenTyp As String, ChargenSchluessel As String, ChargenDefault As String, ProduktDefault As String, VorschriftenTypProduktion As Boolean, VorschriftenTypVerpackung As Boolean
  Set dlg = Dialogs(wdDialogFilePrint)
  ChargenSchluessel = "P"
  ChargenDefault = "0"
  ProduktDefault = "00000"
  ChargenBuchstabe = "A"
  fdbk = dlg.Display
  If Not fdbk = -1 Then Exit Sub
  Kopien = dlg.NumCopies
  dlg.NumCopies = 1
  Antw = NummerHolen
  If Antw < 0 Then Exit Sub
  
 'Hier wird die Auswahl des Vorschriftentyps bestimmt
 strM = "welchen Vorschriftentyp möchten Sie verwenden?" & vbCrLf & vbCrLf & "Bitte tragen Sie ihre Auswahl im Eingabefeld ein:" & vbCrLf & vbCrLf & "Vorschriftentyp= P     HV: Produktion" & vbCrLf & "Vorschriftentyp= V     HV: Verpackung"
 Antw = ChargenSchluessel
 Antw = InputBox(strE & strM, SchluesselAuswahl, Antw)
  If Antw = "P" Then ChargenBuchstabe = "A" & VorschriftenTypProduktion = True & VorschriftenTypVerpackung = False
  If Antw = "V" Then ChargenBuchstabe = "" & VorschriftenTypProduktion = False & VorschriftenTypVerpackung = True
  
  
    
  'Hier wir die Abgefragt, welcher Chargentyp es sein soll (Normalcharge, Validierungscharge, Entwicklungscharge....)
  strM = "um welchen Chargentyp handelt es sich hier?" & vbCrLf & vbCrLf & "Bitte tragen Sie ihre Auswahl im Eingabefeld ein:" & vbCrLf & vbCrLf & "Normalcharge= 0                         Kennzeichen: ohne" & vbCrLf & "Validierungscharge= 1                 Kennzeichen: -V" & vbCrLf & "Entwicklungscharge= 2                Kennzeichen: -E" & vbCrLf & "Technische Charge= 3                 Kennzeichen: -T" & vbCrLf & "Optimierungscharge= 4               Kennzeichen: -O" & vbCrLf & "Auf-/Umgearbeitete Charge= 5   Kennzeichen: -A"
  Antw = ChargenDefault
  Antw = InputBox(strE & strM, TitelAuswahl, Antw)
    If Antw = "0" Then ChargenTyp = ""
    If Antw = "1" Then ChargenTyp = "-V"
    If Antw = "2" Then ChargenTyp = "-E"
    If Antw = "3" Then ChargenTyp = "-T"
    If Antw = "4" Then ChargenTyp = "-O"
    If Antw = "5" Then ChargenTyp = "-A"
     
  '-->Hier wird die erste PA-Nummer in einer Inputbox eingetragen und bei Bedarf hochgezählt
  
 If VorschriftenTypProduktion Then
    strM = "Mit welcher Produkt-Nr. soll der Druck beginnen?" & vbCrLf & vbCrLf & "Achtung: Bitte nur die PA-Nummer ohne den Buchstabe eintragen!" & vbCrLf & vbCrLf & "ZJnnnn Beispiel: für den Produktionsauftrag A00021 bitte nur 00021 eintragen ohne das Kennzeichen A!"
    Antw = ProduktDefault
        While Not bFlag
            Antw = InputBox(strE & strM, TitelHV, Antw)
            If Antw = "" Then Exit Sub
            For i = 1 To Len(Antw)
            If Not Mid(Antw, i, 1) Like "[0-9]" Then
                strE = "Das ist keine gültige Zahl." & vbCr & vbCr
                bFlag = False: Exit For
            Else
                bFlag = True
            End If
            Next i
        Wend
    ChargenNummer = Val(Antw)
    For i = 1 To Kopien
        ChargenNummerFormatiert = Format(ChargenNummer, "00000")
        Charge = ChargenBuchstabe + ChargenNummerFormatiert + ChargenTyp
        NummerEinbringen Charge
        On Error Resume Next
        dlg.Execute
        rc = Err.Number
        On Error GoTo 0
        If rc > 0 Then
        strM = "Beim Drucken ist folgender Fehler aufgetreten:" & vbCr & vbCr
        strM = strM & "RC: (" & rc & ")" & vbCr & Error(rc)
        MsgBox strM, vbExclamation, TitelHV
        Exit Sub
        Else
        ChargenNummer = ChargenNummer + 1
        End If
    Next i
    strM = "Es wurden " & i - 1 & " Kopien mit der Produkt-Nr. " & Antw & " bis "
    strM = strM & ChargenNummer - 1 & " zum Drucker geschickt."
    MsgBox strM, vbInformation, TitelHV
 End If
  
  'Chargennummerierung für eine Verpackungsvorschrift in der Verpackung
  If VorschriftenTypVerpackung Then
    strM = "Bitte geben Sie die Chargennummer des aktuellen Auftrages ein" & vbCrLf & vbCrLf & "Beispiel: Chargenbeispiel Dr. Falk : Ch-Nr.: 13J23538P" & vbCrLf & vbCrLf & "ZJnnnn Beispiel: für den Produktionsauftrag A00021 bitte nur 00021 eintragen ohne das Kennzeichen A!"
    Antw = ProduktDefault
      While Not bFlag
        Antw = InputBox(strE & strM, TitelVV, Antw)
        If Antw = "" Then Exit Sub
        For i = 1 To Len(Antw)
        If Not Mid(Antw, i, 1) Like "[0-9]" Then
            strE = "Das ist keine gültige Zahl." & vbCr & vbCr
            bFlag = False: Exit For
        Else
            bFlag = True
        End If
        Next i
    Wend
    ChargenNummer = Val(Antw)
    For i = 1 To Kopien
        ChargenNummerFormatiert = Format(ChargenNummer, "00000")
        Charge = ChargenBuchstabe + ChargenNummerFormatiert + ChargenTyp
        NummerEinbringen Charge
        On Error Resume Next
        dlg.Execute
        rc = Err.Number
        On Error GoTo 0
        If rc > 0 Then
        strM = "Beim Drucken ist folgender Fehler aufgetreten:" & vbCr & vbCr
        strM = strM & "RC: (" & rc & ")" & vbCr & Error(rc)
        MsgBox strM, vbExclamation, TitelVV
        Exit Sub
        Else
        ChargenNummer = ChargenNummer + 1
        End If
    Next i
    strM = "Es wurden " & i - 1 & " Kopien mit der Produkt-Nr. " & Antw & " bis "
    strM = strM & ChargenNummer - 1 & " zum Drucker geschickt."
    MsgBox strM, vbInformation, TitelVV
  End If
  
  
End Sub

Private Function NummerHolen() As Integer
  Dim lNummer As String
  Q = Chr(34)
  On Error Resume Next
  Projekt = ActiveDocument.CustomDocumentProperties(Zeiger).Value
  If Projekt = "" Then
    strM = "Die Dokumenteigenschaft " & Q & Zeiger & Q & " ist nicht vorhanden "
    MsgBox strM, vbExclamation, TitelHV
    NummerHolen = -12
    Exit Function
  End If
  ChargenNummer = ActiveDocument.CustomDocumentProperties(Projekt).Value
  On Error GoTo 0
  If ChargenNummer = "" Then flag = True
  For i = 1 To Len(ChargenNummer)
    If Not Mid(i, 1) Like "[0-9]" Then flag = True: Exit For
  Next i
  If flag Then
    strM = "Die Dokumenteigenschaft " & Q & Projekt & Q & " oder deren Inhalt ist ungültig."
    MsgBox strM, vbExclamation, TitelHV
    NummerHolen = -8
    Exit Function
  End If
  NummerHolen = Val(ChargenNummer) + 1
End Function

Sub NummerEinbringen(lNummer As String)
  Dim oRange As Range
  lNummer = Format(lNummer, "00000")                                                                        'automatisch mit nullen auffüllen
  ActiveDocument.CustomDocumentProperties(Projekt).Value = lNummer
  For Each oRange In ActiveDocument.StoryRanges
    oRange.Fields.Update
    While Not (oRange.NextStoryRange Is Nothing)
      Set oRange = oRange.NextStoryRange
      oRange.Fields.Update
    Wend
  Next
End Sub

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot HILFE! Word Makro vom Vorgänger erweitern
16.01.2014 11:40:36 Pete
NotSolved