Microsoft Excel

Herbers Excel/VBA-Archiv

Dokument speichern mit Namen der Mappe

Betrifft: Dokument speichern mit Namen der Mappe von: Daniel
Geschrieben am: 31.07.2020 15:16:23

Hallo zusammen,


ich habe ein Makro, dass mir eine Word Datei aus einer Vorlage kopiert und definierte Textmarken automatisch aus Zellen einer Excel Tabelle füllt. Das klappt auch alles soweit.


Jetzt möchte ich aber noch, dass sich die erstellte Word Datei selbst speichert mit dem _

gleichen Pfad und Namen wie die Excel Datei. Irgendwie bekomme ich das nicht hin mit dem Save _
und SaveAs oder wie das heißt.




Sub angeboterstellen()

Dim Angebot As Object
Dim appWord As Object

Set appWord = CreateObject("Word.Application")
Set Angebot = appWord.Documents.Add("Q:\Huesges\Vorlagen\Angebotsschreiben.docx")

appWord.Visible = True

Angebot.Activate
    Angebot.Bookmarks("Kunde").Range.Text = Range("Kunde")
    Angebot.Bookmarks("Ansprechpartner").Range.Text = Range("Ansprechpartner")

   Set Angebot = Nothing
   Set appWord = Nothing
      
   End Sub


Kann mir da jemand weiterhelfen?

Viele dank im Vorraus.


Viele Grüße

Daniel

Betrifft: AW: Dokument speichern mit Namen der Mappe
von: volti
Geschrieben am: 31.07.2020 16:41:38

Hallo Daniel,

schau mal, ob das so in Deinem Sinne funktioniert:

Code in die Zwischenablage
Sub angeboterstellen() Dim Angebot As Object Dim appWord As Object Set appWord = CreateObject("Word.Application") With appWord .Visible = True Set Angebot = appWord.Documents.Add("Q:\Huesges\Vorlagen\Angebotsschreiben.docx") With Angebot .Activate .Bookmarks("Kunde").Range.Text = Range("Kunde") .Bookmarks("Ansprechpartner").Range.Text = Range("Ansprechpartner") .SaveAs Replace(ThisWorkbook.FullName, ".xlsm", ".docx") .Close 'Datei schließen End With .Quit 'Word schließen End With Set Angebot = Nothing Set appWord = Nothing End Sub
viele Grüße aus Freigericht
Karl-Heinz


Betrifft: AW: Dokument speichern mit Namen der Mappe
von: fcs
Geschrieben am: 31.07.2020 16:58:22

Hallo Daniel,

für Word heißt der entsprechende Befehl SaveAs2
außerdem müssen hier Word VBA-Konstanten durch ihre nummerischen ersetzt werden.
Andere Speicher-Parameter musst du ggf. anpassen.

LG
Franz
Sub angeboterstellen()

    Dim Angebot As Object
    Dim appWord As Object
    Dim strFileDocx As String

    'Speicher-Name der Worddatei
    strFileDocx = ActiveWorkbook.FullName
    'Namenserweiterung der Excel-Datei durch docx eraetzen
    strfiledox = Left(strFileDocx, InStrRev(strFileDocx, ".")) & "docx"

    Set appWord = CreateObject("Word.Application")
    Set Angebot = appWord.Documents.Add("Q:\Huesges\Vorlagen\Angebotsschreiben.docx")
    
    appWord.Visible = True
    
    Angebot.Activate
    Angebot.Bookmarks("Kunde").Range.Text = Range("Kunde")
    Angebot.Bookmarks("Ansprechpartner").Range.Text = Range("Ansprechpartner")
    
    Angebot.SaveAs2 FileName:="TestWord.docx", FileFormat:=12, _
      LockComments:=False, Password:="", _
      AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
      EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
      SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15 '12 =  _
wdFormatXMLDocument

   Set Angebot = Nothing
   Set appWord = Nothing
      
End Sub


Betrifft: AW: Dokument speichern mit Namen der Mappe
von: volti
Geschrieben am: 31.07.2020 17:15:35

Hallo Franz,

da ich mich mit Word noch kaum beschäftigt habe, wusste ich das nicht mit dem SaveAs2 oder hatte es vergessen. Aber es steht ja auch bei der MS-Hilfe so und da hätte ich bei Misslingen ja auch reingeschaut.

Aber bei mir im Code wurde trotzdem .SaveAs nicht angemeckert und das Dokument auch entsprechend unter dem neuen Namen gespeichert.

Kennst Du den Unterschied zwischen den beiden Varianten?

viele Grüße aus Somborn
Karl-Heinz

Betrifft: AW: Dokument speichern mit Namen der Mappe
von: Daniel
Geschrieben am: 31.07.2020 22:28:08

Hallo ihr beiden,

Danke erstmal für die schnelle Antwort. Ich hab jetzt beide Codes mal ausprobiert. Die Variante mit saveAs funktioniert bei mir aber nicht. Da kommt es immer zu einem Fehler. Die andere nur mit Save geht wunderbar und auch da wo es hin soll.

Woher wird denn der Pfad festgelegt? Reicht da echt der Code this.workbook aus damit der Pfad von dieser übernommen wird?
Ich bin nämlich noch am grübeln ob der Datei Name fix aus einer Zelle übernommen werden soll. Vom Code her bekomme ich das hin, nur speichert excel die Word Datei nicht mehr in den gleichen Ordner wie die excel Datei.

Habt ihr da vielleicht auch noch mal einen Tipp?

Danke danke danke !

Betrifft: AW: Dokument speichern mit Namen der Mappe
von: volti
Geschrieben am: 31.07.2020 22:56:25

Hallo Daniel,

bitte etwas genauer ausdrücken, welche Variante funktioniert.
Beide Codes verwenden SaveAs, Franz' Version allerdings SaveAs2. Ggf. kann in meiner Version ja auch SaveAs2 verwendet werden, wenn es daran scheitern sollte.

In meiner Variante wird über Thisworkbook.Fullname der komplette Excelname der Datei incl. Pfad genommen, in der sich das Makro befindet und lediglich das xlsm durch docx erstetzt.
Falls Du nur den Pfad benötigst, weil Du den Dateinamen aus einer Zelle nehmen möchtest, kannst Du hierfür z.B. Thisworkbook.Path & "\" & Range("A1").value verwenden.

Falls der Pfadname aus der gerade aktiven Exceldatei, ggf. nicht die in der das Makro steht, musst Du statt Thisworkbook.. => Activeworkbook... nehmen

viele Grüße
Karl-Heinz

Beiträge aus dem Excel-Forum zum Thema "Dokument speichern mit Namen der Mappe"