Kopie einer .docm ohne Makros

Antwort erstellen

Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek: :x: :v:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Kopie einer .docm ohne Makros

Re: Kopie einer .docm ohne Makros

#14

von d'r Bastler » 7. Jul 2024, 02:42

Moin allerseits,
und hier noch als Ergänzung zum Code in #10: Mit
Application DisplayAlerts = false
wb.save
als vorletzte zwei Zeilen erspart man sich beim Speichern die lästige Abfrage "ohne Makros?"

Grüße

Re: Kopie einer .docm ohne Makros

#13

von theo » 29. Jun 2024, 18:18

Nein, das kannst du alles mit VBA erledigen. Du hast ja die Zeile schon in deinem Code drin. Sobald du ein Word Doc als docx speicherst hat das Ding keine Makros mehr. Den Namen vergibst du vor dem Speichern. Der Witz an der Vorlage ist ja der, dass in dem neuen Dokument von Anfang an keine Makros sind, dass darin lediglich die Verbindung zu seiner Vorlage gespeichert ist und dann die Makros aus der Vorlage nutzen kann. Ist selbst das unerwünscht, kann man die Verknüpfung zur Vorlage zur Normal umschalten.
Den Speichernamen baust du dir zusammen oder lässt ihn so. Grundsätzlich heißt ein neues Dokument so wie seine Vorlage. Nennst du das Ding Bastler.dotm so heißt sein erstes Kind Bastler1.docx.

Re: Kopie einer .docm ohne Makros

#12

von d'r Bastler » 28. Jun 2024, 14:10

Moin Theo,

nana - ich will doch niemand vergewohlwurschteln! :lol:

Danke für Deinen erneuten Hinweis auf die Vorlagen, der allerdings die Frage eines Word-Laien aufwirft: Du schreibst "speichern als normales Dokument". Das bedeutet doch aber, dass ich den Dateinamen händisch eingeben muss, oder liege ich da falsch? Denn genau ist es ja, was ich mir ersparen möchte: die doppelte Eingabe von Titel und Dateinamen und die Auswahl des Speicherortes.

okay - ich muss zugeben, das geht über die Aufgabenstellung im Titel etwas hinaus ... ;)

vg

Re: Kopie einer .docm ohne Makros

#11

von theos » 27. Jun 2024, 21:49

Nun hast dus ja doch hingekriegt, Word mit Excelmethoden zu vergewaltigen. :)
Hättest du einmal eine Vorlage (.dotm) erstellt, könntest du dir das ganze Gedönse sparen. Öffnen der Vorlage mit Doppelklick: Datei ausfüllen (oder mit VBA ausfüllen lassen) Dokument speichern als normales Dokument, fertig. Das Dok enthält nicht einen Makro.
Wenn du die Verbindung zur Makrobefüllten Vorlage weghaben willst, hättest du am Ende die "attachedtemplate" zur Normal ändern können. ;)
Aber wenns funktioniert, warum nicht.

Re: Kopie einer .docm ohne Makros GELÖST

#10

von d'r Bastler » 27. Jun 2024, 17:52

Moin allerseits,

das Thema liegt zwar schon eine Weile, aber nachdem mich der erntereiche Sommer dazu zwingt immer neue Rezepte zu notieren, habe ich mich der Automatisierung des Ganzen noch einmal gewidmet.

Für den folgenden Code braucht man eine USF mit einer TextBox, einer ComboBox und einem CommandButton. Die Combo wird aus einem Array im Code (der in die Userform gehört) gefüllt. Als Vorlage dient ein Rezept-Layout, das die Textmarke "titel" enthält. Da müsst Ihr selbst kreativ werden ;-)

Code: Alles auswählen

Option Explicit
Public sPath As String

Private Sub UserForm_Initialize()
Dim i As Integer, f As Integer
Dim aChapter ' Array

sPath = ThisDocument.Path & "\"
aChapter = Array("Basics", "Getränke", "Vorspeisen", "Suppen & Saucen", "Nudeln & Eintöpfe", "Gemüse", _
"Fisch", "Geflügel", "Schwein", "Kalb", "Rind", "Lamm", "Beilagen", "Salate", "Süßspeisen", "Gebäck")

cbxFolder.List = aChapter

For i = 0 To UBound(aChapter)
    If Dir$(sPath & aChapter(i), vbDirectory) = "" Then
        MkDir sPath & aChapter(i)
        f = f + 1
    End If
Next

If f > 0 Then
    MsgBox f & " neue Ordner angelegt!", , "insgesamt " & i
End If

lblName.Caption = "Bitte beachten: Titel = Dateiname!" & vbNewLine & "Keine unzulässigen Zeichen!"

End Sub

Private Sub cbxFolder_Change()
Dim sText As String
Dim rng As Range

'' Bookmark head
If ActiveDocument.Bookmarks.Exists("head") Then
    Set rng = ActiveDocument.Bookmarks("head").Range
    rng.Text = cbxFolder.Value
Else
    MsgBox "Bookmark head?"
End If

sText = cbxFolder.Text
    With ActiveDocument
        .Bookmarks.Add Range:=rng, Name:="head"
    End With

End Sub

Private Sub cmdMakeFile_Click()
Dim sDocName As String, sDocPath As String, sDocFolder As String
Dim rng As Range

'' Titel vorhanden?
sDocName = tbxTitel.Text
If Len(sDocName) < 2 Then
    MsgBox "Bitte Titel eingeben!", , "Hinweis"
    Exit Sub
End If

''Kapitel ausgewählt?
sDocFolder = cbxFolder.Value
If cbxFolder.ListIndex < 0 Then
    MsgBox "Bitte Kapitel auswählen!", , "Hinweis"
        Exit Sub
End If

'' Bookmark title
If ActiveDocument.Bookmarks.Exists("title") Then
    Set rng = ActiveDocument.Bookmarks("title").Range
    rng.Text = sDocName
Else
    MsgBox "Bookmark title?"
End If

sDocPath = ThisDocument.Path & "\" & sDocFolder & "\"
Application.DisplayAlerts = False
sDocName = sDocPath & sDocName & ".docx"
ActiveDocument.SaveAs2 FileName:=sDocName, FileFormat:=wdFormatXMLDocument
Unload Me
Application.Documents.Open FileName:=sDocName
MsgBox sDocName, , "Neue Datei angelegt!"

End Sub
Die Lösung war letztlich die richtige Reihenfolge der letzten drei Befehle. Nach der MsgBox steht das neue Dok mit Titel da wie eine Eins. Die neue Datei enthält noch Makros, die aber beim nächsten Öffnen verschwinden.

Liebe Grüße und Dank für alle vorherige Unterstützung.

Re: Kopie einer .docm ohne Makros

#9

von theos » 23. Nov 2023, 22:40

Sorry, dass hier erst so spät eine Antwort kommt, du hast das sicher inzwischen rausgefunden, dass du da richtig denkst.
Die Vorlage der die neue Datei zugrunde liegt, stellt die Makros zur Verfügung und du kannst auch auf alle möglichen Elemente zugreifen. Das neue Dokument wenn gespeichert wird, hat kein einziges Makro in sich.
Auch in Word gibt es, wie bei Excel, die beim Start geladenen Dateien. Letztlich ist die Normal.dotm und die Personal.xlsb ja nichts anders.
In Word sind die Makros die für alle da sind normal in der Normal.dotm gut aufgehoben. Wenn du spezielle brauchst, weil du ggf. spezifische Formatierungen für ein Projekt brauchst, die du dir in einer Dokumentenvorlage anlegen möchtest, kannst du in das Ding dann auch ganz spezifische Makros einbauen.
Word hat hier eine komplett andere Philosophie von der Dokumentenvorlage wie Excel. Aber so was von anders. :?

Re: Kopie einer .docm ohne Makros

#8

von d'r Bastler » 27. Mai 2023, 14:15

Moin allerseits,

erst einmal lieben Dank, dass Ihr das Thema (also mich :shock: ) noch nicht aufgegeben habt! Nachdem mein Workaround praktisch akzeptabel funktioniert, hindert das mich nicht daran, Eure Vorschläge zu beherzigen und ich werde mich der Sache auch wider widmen.

@Gerhard: Deine Upload-Probleme sollten mit Deiner Anmeldung hier eigentlich behoben sein. Ich habe Deine Berechtigungen eben getestet und Du hast alle Rechte eines registrierten und freigegebenen Forumsmitglieds.

@theo: Dass meine XL-Wurzeln tatsächlich immer wieder sowohl in WD wie auch (und dort noch mehr) in OL ein Hindernis sind. Allerdings gibt es auch in XL die Möglichkeit mit Vorlagen zu arbeiten, in dem Du ein VBA-Projekt mit immer wieder benötigten Makros pflegst, sei es Exporte von gefilterten Daten, Ausgabe als Serienbrief (ohne WD) in PDF und dieses parallel zum aktuellen Projekt geöffnet hältst. Ob das auch mit .XLSX (also ohne Makros in der zweiten Datei) funktioniert, habe ich allerdings noch nicht probiert.

Und so habe ich auch Eurer beiden Vorschlag auch verstanden: WD-Vorlage öffnen, neue Datei dazu und dann auf Textbausteine, Formatvorlagen quer zugreifen. Wenn ich mit dieser Annahme nicht völlig falsch liege, sieht das sehr nach einer vielversprechenden Herangehensweise aus, die ich für meinen semi-professionellen Bedarf gut ausbauen kann. Dem Ganzen ein Userform mit diversen Optionen in Comboboxen, Checkboxen, Toggle-Buttons und anderen Controls vorgeschaltet und ich kann mir vorstellen, dass ich tatsächlich auf meine bisherige Pfuscherei (bisher sind's noch nicht mal Basteleien ... :mrgreen: ) verzichten könnte. Das dann noch ergänzt durch kleine Usermenüs pro Dokumentenart (non-modale Userform) wäre sicher nett. Version 2 wäre dann vermutlich das Anpassen der Menüs pro Dokumententyp per Vorlage.

Vielen, vielen Dank!! und schönes Wochenende!

Re: Kopie einer .docm ohne Makros

#7

von theos » 27. Mai 2023, 08:04

Das Problem das unser Bastler hat ist, dass er von Excel her kommt. Da wird das Makrogedöns gnadenlos weiter gegeben ans neue Mappengebilde, auch wenn das von einer Vorlage neu erstellt wird. Dass Word die Makros in seiner Vorlage behält und allen seinen Kindern zur Verfügung stellt wenn sie im gespeicherten Pfad vorhanden ist, kann man sich als Excel user nicht vorstellen. (Mir gings umgedreht)
Fazit, wenn du das aus der makroverseuchten Vorlage ein neues Dokument erstellst und als docx speicherst, kannst du von dort aus jederzeit auf die Makros der Vorlage zugreifen, wenn du das Dok weitergibst, ist es vorbei mit Makro.
Willst du das auf deinem Rechner die Bindung auf deinem Rechner auch lösen, kannst du die Vorlage ja auch beim Erstellen mit document.new wieder auf die Normal stellen.
Dann ist da auch Schluss

Re: Kopie einer .docm ohne Makros

#6

von Gerhard H1 » 30. Apr 2023, 14:57

Hallo Bastler,

ich würde dir ja gern zur Verdeutlichung des Prinzips ein Beispiel hochladen, aber ich finde die Möglichkeit dazu nicht. Deshalb eine kleine Bastelanleitung:
Erstelle ein Dokument mit beliebigem oder keinem Inhalt. Erstelle ein Modul für eine Userform und darin irgendeine Userform.
Ins Modul ThisDocument schreibst du den Aufruf für diese Userform:

Code: Alles auswählen

Private Sub Document_New()
Userform1.Show
End Sub
Speichere das Dokument irgendwo hin als Dokumentvorlage mit Makros (*.dotm)
Erstelle nun davon durch Doppelklick ein neues Dokument (d.h. eine Kopie der Vorlage)
Dadurch wird der Dreizeiler ausgelöst; die Userform erscheint. Und das, obwohl das neu erstellte Dokument selbst kein Makro enthält. Es kann aber auf das der Vorlage zurückgreifen.
Deshalb kannst du das neue Dokument irgendwohin speichern, ohne ein Makro entfernen zu müssen. Es gibt nämlich keins.

Ob das skizzierte Vorgehen letztlich zu deinem Vorhaben passt, wird separat zu diskutieren sein.

Re: Kopie einer .docm ohne Makros

#5

von d'r Bastler » 30. Apr 2023, 11:18

Moin Gerhard,

Dank für Deine Antwort! Die Sache mit dem Königsweg, den ich als Demokrat zu vermeiden suche, ist vermutlich die beste Lösung, und gerne würde ich sie verstehen. Wenn ich als Bastler eines geblieben bin, dann ist es lernfähig. Das mit dem Document_New werde ich mir heute mal anschauen, wobei es ja doch wieder VBA im neuen Dokument bedeutet, oder sehe ich das falsch?

Grüße

Nach oben