|  
                                             
	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] 
     |