PDA

Vollständige Version anzeigen : aus Word nach (offener) Excel-datei suchen


Stefan67!
27.08.2019, 10:16
Hallo zusammen,
habe folgendes Anliegen, bei dem ich auf Eure Unterstützung hoffe, nachdem ich in Word nur auf Fehlermeldungen gestoßen bin, wenn ich Excel-Makros versucht habe, an Word anzupassen:

Ich habe eine Word-Datei in einer Excel-Datei eingebunden, die als Basis für die Word-Datei dienen soll. Die Excel-Datei fordert den Anwender zunächst auf, die xlsm-Datei nach dem Download unter eigenen Namen abzuspeichern, bevor er weitere Aktionen durchführen kann.
Der Anwender öffnet also zuerst die Excel-Datei, speichert diese und öffnet dann daraus die Word-Datei.
Die Word-Datei benötigt u.a. Daten aus der Excel-Datei, diese ist aber ggf. schon wieder geschlossen.
Folgender Ablauf soll nun also in Word stattfinden:

Starte Excel-Suche:

1. Suche nach einer aktuell geöffneten xlsm-Datei deren erstes Sheets "Topics" heisst.
2. Wenn gefunden, dann den Pfad und Namen der Datei anzeigen.
3. Wenn Datei nicht offen, dann dem Anwender ein Suchfenster (Application.FileDialog?) anbieten zur Auswahl der Datei.
4. Diese dann auf das Vorhandensein vom "Topics"-Sheet prüfen und als "OK" bestätigen ansonsten mit "Falsche Datei" abbrechen.

Besten Dank vorab.

Gerhard H
27.08.2019, 15:01
Hallo Stefan,

ich hab nicht viel verstanden:

Du hast eine "Word-Datei in einer Excel-Datei eingebunden". Das heißt, sie ist als Objekt eingebettet und du kannst per Doppelklick drin arbeiten? Oder soll man sich das anders vorstellen?

Und die soll das Makro enthalten, an dem du grad strickst?

"Die Word-Datei benötigt u.a. Daten aus der Excel-Datei, diese ist aber ggf. schon wieder geschlossen"
Das ist ganz schlecht, und du solltest dafür sorgen, dass die benötigten Daten ausgelesen werden, so lange die Excel-Datei noch offen ist.

Deshalb würde ich den Anwender das da: "Die Excel-Datei fordert den Anwender zunächst auf, die xlsm-Datei nach dem Download unter eigenen Namen abzuspeichern, bevor er weitere Aktionen durchführen kann." erst ganz zum Schluss erlauben.

Dann musst du deinem Anwender nicht noch ein Dialogfeld zum Suchen der Datei anbieten, die er eben erst gespeichert hat.

Vielleicht solltest du noch einmal Sinn und Zweck des Verfahrens erläutern, und die o.g. Fragen beantworten. Mir kommt das ganze recht dubios vor.

Stefan67!
28.08.2019, 07:41
Besten Dank, Gerhard,
für Deinen Vorschlag, mit der Bedingung, die XLSM-Datei offen zu halten, sollte es evtl. auch klappen.

Zum Hintergrund:
Zuerst zu Deiner Frage: Ja, die Word-Datei ist als Objekt in die Exceldatei eingebettet.
Die genannte Exceldatei ist im Grunde genommen eine universelle Basis für eine technische Anforderung zu einem bestimmten Produkt, das aber auf unterschiedliche Weise ausgeführt sein kann. In dieser "Universalanleitung" sind alle nur erdenklichen Themen/Überschriften (ein Thema = eine Zeile) zu der Produktgruppe aufgelistet. Die Exceldatei enthält somit eine Spalte mit der Kapitelebene (= Überschriftenebene), je eine Spalte für die Überschrift in Deutsch und in Englisch, eine Spalte für Hinweise + Fragen bezüglich des zu erstellenden Inhaltes und eine Spalte mit Beispielformulierungen. Abschließend gibt es eine Spalte, in der das jeweilige Thema als relevant markiert wird (das geschieht vor der Übergabe in WORD).
Somit "lebt" die Excelvorlage und kann jederzeit mit zusätzlichen wichtigen Kapiteln, Fragen und Hinweisen zum Inhalt oder auch Beispielformulierungen ergänzt werden. Zum Erstellen der finalen produktspezifischen Anleitung im MS-Word-Format ist nun die Word-Datei zu öffnen. Mit Deinem Vorschlag im Hintergrund ist nun meine Frage:

Wie ermittele ich mit VBA in Word, welches die aktuell geöffnete Xlsm-Datei (mit dem Sheet "Topics" an 1. Stelle) ist; deren Dateiname und der Ablageort sind ja letztendlich nur Excel bekannt?

In Word sollen dann die Überschriften, Hinweise und Beispieltexte in den entsprechenden Formatierungen aufgebaut werden und der Autor erstellt dann darauf hin den eigentlichen Text und integriert ggf. seine Grafiken um diese Anleitung/Spezifikation dann an den letztendlichen Anwender zu übergeben. Somit ist gewährleistet, dass alle Dokumente einen einheitliches Design haben und alle relevanten Themen vollständig berücksichtigt sind.

Hoffe, es ist nun etwas klarer.
Wichtig ist im Moment nur das erkennen der korrekten XLSM-Datei für die Datenübernahme.

Gerhard H
28.08.2019, 12:35
Hallo Stefan,

viel klarer ist es mir nicht geworden, aber das spielt auch keine Rolle, denn ich kann dir diese Frage -

Wie ermittele ich mit VBA in Word, welches die aktuell geöffnete Xlsm-Datei (mit dem Sheet "Topics" an 1. Stelle) ist

- leider nicht beantworten. Vielleicht kann das ein anderer.

hubert17
30.08.2019, 07:17
Hallo,

die offenen Excel-Dateien kannst du z.B. mit folgendem Code durchsuchen und Name und Pfad der gesuchten Datei auslesen.

Sub Dateien_ermitteln()
Dim Anzahl As Integer, Name As String, i As Byte
Dim Tabelle1 As String, Pfad As String
Dim wbXL As Object

Set wbXL = GetObject(, "Excel.Application")

Anzahl = wbXL.Workbooks.Count
For i = 1 To Anzahl
Name = wbXL.Workbooks(i).Name
Tabelle1 = wbXL.Workbooks(i).Worksheets(1).Name
If Right(Name, 4) = "xlsm" And Tabelle1 = "Topics" Then
Pfad = wbXL.Workbooks(i).Path
MsgBox Name & ", " & Pfad
End If
Next i

End Sub

Stefan67!
30.08.2019, 11:35
Super, danke Hubert17.