Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.05.2024 16:36:49
07.05.2024 14:51:38
07.05.2024 13:27:17
Anzeige
Archiv - Navigation
1268to1272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aus Excel Word-Speichern-Unter-Dialog aufrufen

Aus Excel Word-Speichern-Unter-Dialog aufrufen
grossermanitu
Hallo,
ich erstelle aus Excel ein Word-Dokument das im Anschluss den Speichern-Unter-Dialog mit vorgegeben Pfad aufrufen soll. Das ganze funktioniert solange keine anderen Word-Dokumente offen sind.
Wie weiße ich nun zu, dass für das Word-Dokument das gerade erstellt wurde der Speichern-Unter-Dialog geöffnet wird.
Unten stehend der Code. Die relevanten Zeilen befinden sich am Ende. Danke im Voraus.
Option Explicit

Public Function fkt_ReplaceBookmarkText(oDoc As Word.Document, strBMName As String, strBMText    _
_
_
_
As String)
'fkt_ReplaceBookmarkText ActiveDocument/ Name des zu bearbeitenden Dokuments, "Name  _
Textmarke", "Einzufügender Text"
'Funktion zum Befüllen von Textmarken
'Variblen Deklaration
Dim rng As Word.Range
'Wenn Textmarke "strBMName" existert
If oDoc.Bookmarks.Exists(strBMName) Then
'Merken mittels Range-Objekt den Range-Bereich der Textmarke
Set rng = oDoc.Bookmarks(strBMName).Range
'Erstellt einer neuen Textmarke gleichen Namens um die Grenzen des Range-Objektes
rng.Text = strBMText
'Text der existierende Textmarke "strBMName" durch den Text "strBMText" ersetzt werden.
oDoc.Bookmarks.Add strBMName, rng
Set rng = Nothing
End If
End Function

Sub Arbeitsvertrag_Gehalt()
'Aktualität der Vorlage überprüfen
Dim datum_original As String
Dim datum_vorlage As String
datum_original = FileDateTime("X:\Vorlagen_Leitfäden_Prozessdoku\Verträge\Mitarbeiter\vorlage_angestellte\2_nicht student\gehalt\gehalt_sachl_befristet_name_vorname_av_projektnummer.dot")
datum_vorlage = FileDateTime("C:\Eigene Dateien\Automatisierung\Vorlagen\Original\gehalt_sachl_befristet_name_vorname_av_projektnummer.dot")
If Not datum_original = datum_vorlage Then
MsgBox "Achtung Vertragsvorlage veraltet. Bitte aktualisieren!"
Exit Sub
Else
'MsgBox "Vertragsvorlage ist aktuell!"
End If
Dim strdatei As String
Dim strArtAnmeldung As String
Dim strdatum As String
Dim strKundenname As String
Dim strplz As String
Dim strfirmaKurz As String
Dim strunternehmenkd As String
Dim strprojektbeginn As String
Dim streinsatzort As String
Dim strMitarbeiterAnrede As String
Dim strMitarbeiterAnrede2 As String
Dim strMitarbeiterGeburts As String
Dim strMitarbeiterStrasse As String
Dim strMitarbeiterPLZ As String
Dim strMitarbeiterOrt As String
Dim strMitarbeiterBeruf As String
Dim streinsatzgebiet As String
Dim strgehalt As String
Dim strurlaubstage As String
'Projektname zerlegen
Dim vy As Variant
vy = Split(Worksheets("Vorlage").Cells(1, 2), " - ") ' SPACE Bindestrich SPACE als Trennzeichen
Dim strP_Nr As String
Dim strP_Kd As String
Dim strP_Name As String
strP_Nr = vy(0)
strP_Kd = vy(1)
strP_Name = vy(2)
'Mitarbeitername in Vor- und Nachname zerlegen
Dim strMitarbeitername As String
strMitarbeitername = Worksheets("Vorlage").Cells(29, 2)
Dim vz As Variant
vz = Split(strMitarbeitername, ", ") ' KOMMA SPACE als Trennzeichen
Dim strMA_Vorname As String
Dim strMA_Nachname As String
strMA_Vorname = vz(1)
strMA_Vorname = RTrim$(strMA_Vorname)
strMA_Vorname = LTrim$(strMA_Vorname)
strMA_Nachname = vz(0)
strMA_Nachname = RTrim$(strMA_Nachname)
strMA_Nachname = LTrim$(strMA_Nachname)
Dim strEmailma As String
Dim strTelma As String
strEmailma = Worksheets("Vorlage").Cells(30, 2)
strTelma = Worksheets("Vorlage").Cells(31, 2)
'Anrede Mitarbeiter festlegen
Dim strMA_Anrede As String
Dim strMA_Anrede2 As String
strMA_Anrede = Worksheets("Vorlage").Cells(28, 2)
If strMA_Anrede = "Herr" Then
strMA_Anrede2 = "Herrn"
Else
strMA_Anrede2 = "Frau"
End If
'Anmeldung kürzen
strArtAnmeldung = Left(Worksheets("Vorlage").Cells(46, 2), 4)
strdatum = Worksheets("Vorlage").Cells(48, 2)
strgehalt = Worksheets("Vorlage").Cells(39, 4)
strMitarbeiterPLZ = Worksheets("Vorlage").Cells(34, 2)
strMitarbeiterGeburts = Worksheets("Vorlage").Cells(35, 4)
strMitarbeiterOrt = Worksheets("Vorlage").Cells(35, 2)
strMitarbeiterBeruf = Worksheets("Vorlage").Cells(45, 2)
strunternehmenkd = Worksheets("Vorlage").Cells(7, 2)
strfirmaKurz = Worksheets("Vorlage").Cells(8, 2)
strprojektbeginn = Worksheets("Vorlage").Cells(47, 2)
streinsatzort = Worksheets("Vorlage").Cells(24, 2)
strurlaubstage = Worksheets("Vorlage").Cells(41, 2)
Dim strProjektnameSpezial As String
strProjektnameSpezial = strP_Nr & " - " & strP_Name & " " & strfirmaKurz
'Word-Dokument öffnen
Dim appWord As Object
Set appWord = CreateObject("Word.Application")
appWord.Visible = True
Dim filename As String
Dim file As String
file = "gehalt_sachl_befristet_name_vorname_av_projektnummer.doc"
filename = "C:\Eigene Dateien\Automatisierung\Vorlagen\" & file
Dim nDoc As Word.Document 'Dokument 'Angebotsvorlage'
Set nDoc = appWord.Documents.Open(filename)
Dim strname As String
Dim strName2 As String
Dim path As String
'Textmarke "X" in Dokument nDoc mit "Variabel" ersetzen
fkt_ReplaceBookmarkText nDoc, "MitarbeiterAnrede", strMA_Anrede2 '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterAnrede2", strMA_Anrede '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterVorname", strMA_Vorname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterVorname2", strMA_Vorname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterVorname3", strMA_Vorname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterNachname", strMA_Nachname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterNachname2", strMA_Nachname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterNachname3", strMA_Nachname '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterGeburtsdatum", strMitarbeiterGeburts '
fkt_ReplaceBookmarkText nDoc, "plz", strMitarbeiterPLZ '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterOrt", strMitarbeiterOrt '
fkt_ReplaceBookmarkText nDoc, "MitarbeiterBeruf", strMitarbeiterBeruf '
fkt_ReplaceBookmarkText nDoc, "Einsatzort", streinsatzort '
fkt_ReplaceBookmarkText nDoc, "Projektbeginn", strprojektbeginn '
fkt_ReplaceBookmarkText nDoc, "Projekttitel", strProjektnameSpezial '
fkt_ReplaceBookmarkText nDoc, "Gehalt", strgehalt '
fkt_ReplaceBookmarkText nDoc, "Datum", strdatum '
fkt_ReplaceBookmarkText nDoc, "Datum2", strdatum '
fkt_ReplaceBookmarkText nDoc, "urlaubstage", strurlaubstage '
' Löscht alle Textmarken im Haupttext
Dim tm As Bookmark
For Each tm In nDoc.Bookmarks
tm.Delete
Next tm
'Ab hier hackt es
With Dialogs(wdDialogFileSaveAs)
.Name = "X:\Mitarbeiter\Verträge\Rhein_Main\Angestellte\AV_in bearbeitung\" & strMA_Nachname & "_" & strMA_Vorname & "_AV_" & strP_Nr & ".doc"
'.Format = wdFormatdoc
.Show
End With
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Aus Excel Word-Speichern-Unter-Dialog aufrufen
25.06.2012 20:56:53
fcs
Hallo grossermanitu,
ich hab zum Testen dein Makro mal auf das wesentliche reduziert.
mit den Anpassungen in den als "### wichtig ###" gekennzeichneten Zeilen sollte es funktionieren.
Bei mir unter Excel/Word 2010 funktionierte es.
Die 1. Anpassung verhindert eine Fehlermeldung wenn 2 Doc erstellt werden, ohne das 1. erstellte Doc zu schliessen. Außerdem wird die Vorlage nicht versehentlich überschrieben.
Gruß
Franz
Sub Arbeitsvertrag_Gehalt_test()
Dim strMA_Vorname As String
Dim strMA_Nachname As String
Dim strP_Nr As String
Dim strFileName As String
'Word-Dokument öffnen
Dim appWord As Object
Set appWord = CreateObject("Word.Application")
appWord.Visible = True
Dim filename As String
Dim file As String
file = "gehalt_sachl_befristet_name_vorname_av_projektnummer.doc"
filename = "C:\Eigene Dateien\Automatisierung\Vorlagen\" & file
'Testwerte
file = "gehalt.doc"
filename = "C:\Users\Public\Test\" & file
Dim nDoc As Word.Document 'Dokument 'Angebotsvorlage'
Set nDoc = appWord.Documents.Open(filename, ReadOnly:=True)   '### wichtig ###
Dim strname As String
Dim strName2 As String
Dim path As String
'Ab hier hackt es
strFileName = "X:\Mitarbeiter\Verträge\Rhein_Main\Angestellte\AV_in bearbeitung\" _
& strMA_Nachname & "_" & strMA_Vorname & "_AV_" & strP_Nr & ".doc"
'testwert
strFileName = "C:\Users\Public\Test\" & Format(Now, "YYYY-MM-DD hhmmss") & file
With appWord.Dialogs(wdDialogFileSaveAs)                      '### wichtig ###
.Name = strFileName
'.Format = wdFormatdoc
.Show
End With
End Sub

Anzeige
AW: Aus Excel Word-Speichern-Unter-Dialog aufrufen
26.06.2012 09:52:15
grossermanitu
Hallo Franz,
vielen Dank. Jetzt klappt alles wie gewünscht. :-)

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige