Guten Tag liebe Forum User
Ich bin absoluter VBA-Neuling und habe selbst einige Word-Makros auf Basis von VBA erstellt, um standardisierte Word-Dateien auf Basis einer Abfrage (UserForm) und Schnellbausteinen in Word zu ermöglichen.
Details des VBA-Codes:
Beim Start einer Word-Datei wird automatisch UserForm2 gestartet, bei welcher der User entscheidet, ob er einen Entwurf erstellen möchte oder nicht. Falls ja, folgt UserForm1 bei welcher der User mittels Selektion wird die entsprechende Produktvariante gewählt („Produktvariante 1, Produktvariante 2, usw.) und entsprechend werden die richtigen Word-Schnellbausteine in das Dokument geladen. Die Schnellbausteine werden zusätzlich über weitere Abfragen definitiv geladen oder nicht:
Beispiel:
Frage: „Möchten Sie eine Bestell-Tabelle im Dokument abbilden?“
Antwort: „Ja“
Ergebnis: Schnellbaustein „Bestell-Tabelle“ wird in die Vorlage geladen
[b]Fehler:[/b]
Leider bekomme ich immer dann eine Fehlermeldung, wenn das Skript durchgelaufen ist und ich Word schliesse und anschliessend wieder öffne. Die Dokumentenwiederherstellung wird angezeigt, als wäre Word unsachgemäss beendet worden. Ich erkenne aber keinen Fehler. Ich schätze aber, es könnte an dem Befehl liegen:
[code]ActiveDocument.Save[/code]
Kann mir jemand helfen, das Problem zu lösen? Das wäre super, vielen Dank!
[b]Erläuterung Quellcode:[/b]
Sub AutoOpen: Beim Öffnen des Dokuments wird automatisch UserForm2 geöffnet. Dort kann der User entscheiden, ob er einen Entwurf erstellen möchte oder nicht.
Falls ja, startet UserForm1.Show. Dort kann er seinen gewünschten Produktbereich wählen.
[b]Quellcode:[/b]
[code]
Sub AutoOpen()
Dim dname As String
dname = ActiveDocument.Name
If dname = "DTS2.0_MASTER.dotm" Then
UserForm2.Show
Else
UserForm3.Show
End If
End Sub
[/code]
[code]
Private Sub CommandButton1_Click()
UserForm2.Hide
UserForm1.Show
End Sub
Private Sub CommandButton2_Click()
UserForm2.Hide
MsgBox "Das Dokument wird geschlossen."
ActiveDocument.Close
End Sub
[/code]
[code]
Sub Neues_Projekt()
' -----------------------------------------------------------------
' Abfrage, zur Erfassung des Typen (Variable Type_No)
Type_No = InputBox("Bitte geben Sie den Produkt-Typ im folgenden Format ein: XXXX!", "Bitte Produkt-Typ eingeben")
If Type_No = "" Then
MsgBox "Vorgang abgebrochen! Das aktive Dokument wird geschlossen."
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges ' CloseAllDocuments
Exit Sub
End If
' Abfrage, zur Erfassung des Typen (Variable Type_Name)
If MsgBox("Handelt es sich bei Ihrem Produkt-Typ um eine Standard-Variante? (bzw. NICHT um eine Sondervariante (Clamp / ATEX / ...)?", vbYesNo) = vbNo Then
Type_Name = InputBox("Bitte geben Sie die Produkt-Variante im folgenden Format ein: Tube_Valve_Body / Weld / ATEX / ...!", "Bitte Produkt-Variante eingeben")
If Type_Name = "" Then
MsgBox "Vorgang abgebrochen! Das aktive Dokument wird geschlossen."
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges ' CloseAllDocuments
Exit Sub
End If
Else
Type_Name = "Standard"
End If
' Projekt-Verzeichnis vorhanden? Ja = Ok!, Nein = Ordner erstellen
Dim Datum As String
Dim Path As String
Dim Path1 As String
Dim Path2 As String
Dim Path3 As String
Dim Path4 As String
Datum = Format(Date, "yyyymmdd")
Path = "\\BURKERT\Marketing\DataSheetReview\1_PROJEKTE\" + Type_No + "_" + Type_Name
Path1 = Path + "\1_LATEST_VERSION_WORD"
Path2 = Path + "\2_LATEST_VERSION_PDF"
Path3 = Path + "\3_FILES"
Path4 = Path + "\4_PREV_VERSIONS_WORD"
If Dir(Path, vbDirectory) = "" Then
MkDir (Path)
MkDir (Path1)
MkDir (Path2)
MkDir (Path3)
MkDir (Path4)
MsgBox "Ein Projekt-Ordner f¸r das gew¸nschte Projekt wurde automatisch angelegt!"
' Nein...
Else
MsgBox "Ein entsprechender Projekt-Ordner ist bereits vorhanden! Bitte pr¸fen Sie eventuelle Dubletten oder w‰hlen Sie einen anderen Namen!"
MsgBox "Vorgang abgebrochen! Das aktive Dokument wird geschlossen."
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges ' CloseAllDocuments
Exit Sub
End If
' Abfrage, zur Erfassung des Editors (Variable Editor_name)
Dim Editor_name As String
Editor_name = InputBox("Bitte geben Sie Ihren Namen im folgenden Format ein: NameVorname!", "Bitte Ihren Namen eingeben")
If Editor_name = "" Then
MsgBox "Vorgang abgebrochen! Das aktive Dokument wird geschlossen."
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges ' CloseAllDocuments
Exit Sub
End If
' Definition Benennung Review-Datei "FILENAME_yyyymmdd_MusterMax.docm"
Dim DocName As String
DocName = "DS" & Type_No & "_" & Type_Name & "_" & "ENTWURF" & "_" & Format(Date, "yyyymmdd") & "_" & Editor_name & ".docm"
DocName2 = Path1 + "\" + DocName
Dim strPfad As String
strPfad = Options.DefaultFilePath(wdDocumentsPath)
Options.DefaultFilePath(wdDocumentsPath) = Path1
With Dialogs(wdDialogFileSaveAs)
.Name = DocName2
.Format = Word.WdSaveFormat.wdFormatXMLDocumentMacroEnabled
.Show
End With
'14.03.2019: Deaktiviere ƒnderungsmodus
'ActiveDocument.TrackRevisions = True
'ActiveDocument.ShowRevisions = True
ActiveDocument.Save
MsgBox "Sie kˆnnen nun mit der Bearbeitung des Dokuments beginnen. Editieren Sie das Dokument wie gew¸nscht." & vbNewLine & "Die Datei wurde automatisch im Unterordner 1_LATEST_VERSION_WORD des Projektordners abgelegt." & vbNewLine & "Bitte legen Sie Bild-Dateien etc. im Unterordner 3_FILES ab."
'ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges ' CloseAllDocuments
'ActiveDocument.Close SaveChanges:=wdSaveChanges
End Sub
[/code]
|