Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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

Inhalt Spalte A an verschiedene Worddateien exportieren

Inhalt Spalte A an verschiedene Worddateien exportieren
30.01.2024 15:21:19
DerFreddy
Einen schönen Nachmittag alle zusammen!

Ich habe jetzt einige Wochen jegliche Foren durchsucht und zweifle gerade daran ob mein Problem überhaupt lösbar ist.

Was ist mein Ziel:
Ich habe einen Ordner mit verschiedenen Worddateien in denen ein und das selbe Bookmark 'LaufendeNummer' hinterlegt ist.
In meiner Exceltabelle werden über ein Makro bzw. das Klicken auf einen Button in Spalte B die Dateinamen der Worddateien aus dem Ordner aufgelistet und in Spalte A eine dazugehörige laufende Nummer generiert. Bis hier hin funktioniert alles einwandfrei.
Ich möchte nun, dass die laufende Nummer aus Spalte A an das Bookmark in der Worddatei aus der gleichen Zeile exportiert wird.

Was habe ich bisher probiert:
Ein Versuch beim Erstellen der Dateiliste direkt die laufende Nummer aus der gleichen Zeile an die Datei zu exportieren, habe ich nicht hinbekommen bzw. fehlt mir einfach die programmiertechnische Schlauheit und Erfahrung.
Gleich verhält es sich beim Generieren der laufenden Nummer diese direkt an die Word Datei zu exportieren.
In einem anderen Teil meines Programms habe ich erfolgreich fixe Zelleninhalte wie z.B. Kundennamen usw. an Worddokumente über Bookmarks exportieren können.
Es hängt tatsächlich bei mir an der variablen Anzahl an Worddokumenten und somit an der variablen Anzahl an laufenden Nummern.

Ich probiere hier auf viel verwirrenden Code von mir zu verzichten. Wichtig wäre mir eine allgemeine Lösung mit der ich lernen und diese dann anpassen kann. Ich bin leider noch kein VBA Profi, deshalb mein Hilferuf.

Ich hoffe ich habe es so simpel und verständlich wie möglich ausgedrückt.

Liebe Grüße gehen raus ins Internet!
Freddy

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
30.01.2024 17:10:51
UweD
Hallo

Ohne den "Grundcode" und ohne Musterdatei(en) wird es schwierig jemand zu finden, der sich der Sache komplett annimmt.


Vielleicht hilft dir das ja.

Ist ein Code, der mir eine neue Worddatei erstellt und Bookmarks tauscht.
Kannst du aber auf öffnen ändern.
Die Arr Scheife fällt ja bei dir auch weg






'** Überschriften, die aus Datenerfassung in Worddatei Textmarken übertragen werden
ArrWord = Array("Kundenname", "EKP", "Auftragsnummer - AM Portal", "PAL Datum", _
"Haupt ASP", "Email Kunde", "Telefon", "Versandart", _
"Porto (LP)", "Anzahl Adressen", _
"Start Messung", "Export Datum", "Reporting Datum", )
'....
'*** Word-Anwendung sichtbar starten
Set objWDApp = CreateObject("Word.Application")
objWDApp.Visible = True

'*** neue Datei aus Vorlage generieren
Set objDocx = objWDApp.Documents.Add(WPfad & WDatei)

With objDocx

'*** prüfen, ob Textmarken existieren, dann im Worddokument einfügen/ersetzen

For Each Z In ArrWord
'*** unzulässige Zeichen tauschen/entfernen
BMark = Replace(Z, " ", "_")
BMark = Replace(BMark, "-", "")
BMark = Replace(BMark, "(", "")
BMark = Replace(BMark, ")", "")
BMark = Replace(BMark, "/", "")
BMark = Replace(BMark, "\", "")

If .Bookmarks.Exists(BMark) Then _
.Bookmarks(BMark).Range.Text = TB.cells(Zeile,1) 'hier deine Nummer aus Zeile und Spalte A
Next

'*** Neuen Namen zusammensetzen
WNeuNam = WFormat & TB2.Cells(i, SpKuNa2) & _
"_" & Format(Date, "YYYYMMDD") & ".docx"

'*** Worddatei mit neuem Namen speichern
.SaveAs (WPfad & WNeuNam)

End With

'*** Word schließen
'objWDApp.Quit 'bei Bedarf


LG UweD
Anzeige
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
30.01.2024 21:37:44
snb
Das ist nicht anderes als 'sehr einfach' an zu deuten.
übrigens wäre es besser Docvariables zu verwenden.
Ich unterstelle in Spalte B das 'fullpath' der Dateien.

Sub M_snb()

sn=sheet1.cells(1).currentregion.reisze(,2)

for j=2 to ubound(sn)
with getobject(sn(j,2))
.bookmarks("LaufendeNummer").range.text=sn(j,1)
.close -1
end with
next
End Sub
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
30.01.2024 21:38:45
snb
Typo: resize(,2)
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
30.01.2024 18:42:01
JoWE
Hallo Freddy,
versuchs mal so:
Sub multiple_Docs_Word_TM_fuellen()

Dim wdApp As Object
Dim wdDoc As Object
Dim FName As String
Dim ze As Long
'late binding für die Word-App - Verweis setzen ist entbehrlich
Set wdApp = CreateObject("Word.Application")
For ze = 2 To Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row 'Dateinamen in Spalte 2, keine Leerzeilen
FName = Sheets("Tabelle1").Cells(ze, 2) 'Tabellenname und Word-Dateinamen incl. Pfadangabe ok? Sonst beides ANPASSEN!!!
Set wdDoc = wdApp.Documents.Open(FName, ReadOnly:=False)
wdApp.Visible = True
Set BMRange = wdDoc.Bookmarks("LaufendeNr").Range
BMRange.Text = Format(Sheets("Tabelle1").Cells(ze, 1), "00000")
wdDoc.Bookmarks.Add "LaufendeNr", BMRange
wdDoc.Close savechanges:=True
Next
wdApp.Quit
Set wdApp = Nothing
End Sub


Gruß
Jochen
Anzeige
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 13:01:31
snb
Wenn du lernen willst wäre es schön meinen Vorschlag zu testen.
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 09:35:15
DerFreddy
Guten Morgen Zusammen!

Vielen Vielen Dank euch allen!!! Das hilft mir sehr weiter und ich kann mich der ganzen Sache auf verschiedenen Wegen nähern.

Ich habe Jochens Variante einmal eingepflegt und ich denke das wird funktionieren.
Ich habe jetzt aber noch ein Problem.
Die Variable BMRange habe ich als Range definiert. Aber von Excel bekomme ich dir Rückmeldung: Laufzeitfehler 438 - Objekt unterstützt diese Eigenschaft oder Methode nicht. Wird BMRange anders definiert?

Hier der Quellcode für mein beschriebenes Problem. Den Rest habe ich wegen der Übersicht weggelassen. Ich hoffe es ist selbsterklärend.
- Wordapp und Worddoc werden weiter oben im Quellcode definiert und Word gestartet.
- Namen, Vorgangsnummern, Gewerke usw. werden in einem anderen Modul definiert und sind nur für den Pfad in dem unten dargestellten Code wichtig.
- Pfade werden über Variablen definiert, da diese in verschiedenen Bereichen der Datei anders aussehen.
- Dateiname habe ich in Spalte 4 generieren lassen und das im Quellcode von Jochen angepasst.
- ze habe ich auf 1 gesetzt, da das Sheet mit dem ich arbeite eine Hilfstabelle im Hintergrund ist und keine Überschriften hat. Es startet also direkt in Zeile 1.
- Bis zur BMRange läuft alles sauber durch und tut das was es tun soll korrekt :-)



'Generierung laufende Nummer in Spalte A
Dim PreNum As String
PreNum = "3.1."
Dim SufNum As Long
SufNum = 0

Dim i As Long

For i = 1 To 65536
If Cells(i, 2) > "" Then 'In Spalte B sind die ausgewählten Gefährdungsbeurteilungen nach Namen aufgelistet, in Spalte D die dazugehörigen Dateinamen welche weiter unten im Code eingetragen werden
SufNum = SufNum + 1
Cells(i, 1) = PreNum & SufNum 'Ergibt dann 3.1.1, 3.1.2, 3.1.3, usw
End If
Next

'Pfad Gefährdungsbeurteilungen
Dim Pfad_GFBU As String
Pfad_GFBU = "B:\betr. Beratung\10_Firmenberatung\"
Dim Ordnername_GFBU As String
Ordnername_GFBU = LfdNummer & "_" & Name_Tischlerei & "\"
Dim OrdnerGefaehrdungsbeurteilung_GFBU As String
OrdnerGefaehrdungsbeurteilung_GFBU = "10_Gefährdungsbeurteilungen"
Dim Endpfad_GFBU As String
Endpfad_GFBU = Pfad_GFBU & Ordnername_GFBU & OrdnerGefaehrdungsbeurteilung_GFBU & "\"

Dim FSO_GFBU As Object
Dim Ordner_GFBU As Object
Dim Datei_GFBU As Object
Dim n_GFBU As Integer
Dim Name_GFBU As String

'Abfrage Dateinamen und generierung Dateiliste der Gefährdungsbeurteilungen

Set FSO_GFBU = CreateObject("scripting.FileSystemObject")
Set Ordner_GFBU = FSO_GFBU.GetFolder(Endpfad_GFBU)

For Each Datei_GFBU In Ordner_GFBU.Files
Cells(n_GFBU + 1, 4) = Datei_GFBU.Name
n_GFBU = n_GFBU + 1

Next Datei_GFBU

'Laufende Nummer in Worddokumente eintragen

Dim ze As Long
Dim BMRange As Range

For ze = 1 To Sheets("Liste_GFBU").Cells(Rows.Count, 4).End(xlUp).Row
Name_GFBU = Sheets("Liste_GFBU").Cells(ze, 4)
Set worddoc = wordapp.Documents.Open(Endpfad_GFBU & Name_GFBU)
wordapp.Visible = False
Set BMRange = wordapp.Bookmarks("LaufendeNummer").Range
BMRange.Text = Format(Sheets("Liste_GFBU").Cells(ze, 1), "00000")
worddoc.Bookmarks.Add "LaufendeNummer", BMRange
worddoc.Close savechanges:=True

Next

'Word beenden
wordapp.Quit

'Wechsel zur Hauptmaske Gefährdungsbeurteilungen
Worksheets("Gefaehrdungsbeurteilung_Check").Activate

Exit Sub
End Sub

Anzeige
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 09:53:46
JoWE
Dim BMRange as Object
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 10:07:13
DerFreddy
Habs geändert... leider selbe Fehlermeldung :-(
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 10:16:32
JoWE
Freddy,
Dim BMRange as Object

Set BM Range = wdDoc.Bookmarks("LaufendeNr").Range

Gruß
Jochen
AW: Inhalt Spalte A an verschiedene Worddateien exportieren
31.01.2024 10:50:26
DerFreddy
Manchmal sieht man vor lauter Bäumen.......

Vielen vielen Dank!

Es funktioniert!

Habe noch das Format rausgenommen bei BMRange. Das hatte mir noch die Nummer zerhackt.

So läuft es wie gewünscht:


Dim ze As Long
Dim BMRange As Object

For ze = 1 To Sheets("Liste_GFBU").Cells(Rows.Count, 4).End(xlUp).Row
Name_GFBU = Sheets("Liste_GFBU").Cells(ze, 4)
Set worddoc = wordapp.Documents.Open(Endpfad_GFBU & Name_GFBU)
wordapp.Visible = False
Set BMRange = worddoc.Bookmarks("LaufendeNummer").Range
BMRange.Text = Sheets("Liste_GFBU").Cells(ze, 1)
worddoc.Bookmarks.Add "LaufendeNummer", BMRange
worddoc.Close savechanges:=True

Next


Vielen vielen Dank nochmal! Ich war wirklich am verzweifeln. Danke!
Anzeige
AW: Gerne
31.01.2024 10:54:59
JoWE

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige