PDA

Vollständige Version anzeigen : Mittels Makro mehrere Dokumente öffnen


Lex8
01.07.2014, 14:43
Hi Leute,

ich habe ein Makro, welches das Dokument Kräfteübersicht Vorlage..doc öffnet. siehe code:



Sub Kräfteübersicht()
CreateObject("word.application").Documents.Open("F:\BPK_RE_FREMD\2014 BLS EINSATZ\Vorlagen Kräfte\Kräfteübersicht Vorlage..doc").Application.Visible = True
ActiveWorkbook.Save
Range("G10").Select
End Sub

allerdings möchte ich, dass wenn dies nicht vorhanden ist zum öffnen,
dass folgendes Dokument auf Festplatte "I" geöffnet werden soll:

I:\BPK_RE_FREMD\2014 BLS EINSATZ\Vorlagen Kräfte\Kräfteübersicht Vorlage..doc

Bekomme das leider nicht hin.

Bitte um Hilfe.

lg und danke lex

Hajo_Zi
01.07.2014, 15:41
benutze Dir() zum überprüfen ob vorhanden.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Lex8
01.07.2014, 15:54
sry, wie muss ich denn das Dir() einbauen?
ist für mich komplett neu.

gruß lex

Hajo_Zi
01.07.2014, 15:56
Hallo Lex,

vorhandene Datei
If Dir(Pfad\Datei) <> "" then

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Lex8
01.07.2014, 16:11
Ich weis nicht ob ich das nun richtig verstanden habe:

Sub Verkehrsmeldung()
CreateObject("word.application").Documents.Open("I:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx").Application.Visible = True
Range("G10").Select
If Dir("I:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx") <> "" Then
CreateObject("word.application").Documents.Open("J:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx").Application.Visible = True
Range("G10").Select
End If
End Sub



so gibt er mir jedoch nen fehler aus.

hab jetzt nen anderes dokument als beispiel genommen.

gruß lex

Lex8
01.07.2014, 16:16
oder so?

Sub Verkehrsmeldung()
If Dir("I:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx") <> "" Then
CreateObject("word.application").Documents.Open("I:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx").Application.Visible = True
End If
If Dir("J:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx") <> "" Then
CreateObject("word.application").Documents.Open("J:\2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx").Application.Visible = True
End If
End Sub

Hajo_Zi
01.07.2014, 16:24
ich vermute mal es ist in beiden Zeilen der gleiche Pfad und Dateiname.
Bei mir kommt mit einer Datei kein Fehler. Deinen Fehler konnte ich nicht sehen.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Lex8
01.07.2014, 16:24
Ok, hab jetzt folgenden Code:

Sub Bestatterliste()
If Dir("I:\Bestatterliste\Verständigungsliste Bestatter.doc") <> "" Then
CreateObject("word.application").Documents.Open("I:\Bestatterliste\Verständigungsliste Bestatter.doc").Application.Visible = True
End If
On Error Resume Next
If Dir("J:\Bestatterliste\Verständigungsliste Bestatter.doc") <> "" Then
CreateObject("word.application").Documents.Open("J:\Bestatterliste\Verständigungsliste Bestatter.doc").Application.Visible = True
End If
End Sub


Soweit funktionierts jetzt.

Meine Frage nun noch, ist es möglich dass es mir das Word Dokument in den Vordergrund legt?

vielen dank schon mal

gruß lex

GMG-CC
01.07.2014, 16:31
Ich würde mir eine neue Variable namens Pfad anlegen. Und dann dieser Variablen den entsprechenden String zuweisen:
Dim Pfad as string
Pfad = "2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx"
If Dir("I\" & Pfad = "" Then
Pfad = "J" & Pfad
Else
Pfad = "I" & Pfad
End If
... ungetestet

Lex8
01.07.2014, 16:39
der Code sieht gut aus,

jedoch kommt fehler beim kompilieren

von:
2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx"

gruß lex

ps: gibts bei der Formel wo ich verwende irgend einen code dass er das Dok in Vordergrund legt?

haklesoft
01.07.2014, 17:36
Hallo Lex,

dotx-Dateien sind Vorlagen! Die werden im Word-Objekt mit Documents.Add geladen und ergeben ein neues Dokument.
doc oder docx sind vorhandene Dokumente, die im Word-Objekt mit Documents.Open geöffnet werden.

Wenn Du das Word-Objekt direkt mit einem Dokument startest, solltest Du nicht auf Application in der selben Programmzeile zugreifen.

GMG-CC
01.07.2014, 17:37
der Code sieht gut aus
Welchen Code meinst du? Es gibt hier mehrere Stellen mit Code.

jedoch kommt fehler beim kompilieren
von:
2014 BLS UNTERLAGEN Öffentlich\2014 Verkehr\2 VORLAGE Verkehrsmeldungen\Verkehrsmeldung Vorlage.dotx"
???
Was für eine Fehlermeldung?
Und das, was du hier als Codezeile angegeben hast, ist ja auch nur ein Teil der Zeile ...

ps: gibts bei der Formel wo ich verwende irgend einen code dass er das Dok in Vordergrund legt?
Ich sehe die einzelnen Worte kann aber keinen inhaltlichen Zusammenhang herstellen. -> Ich verstehe nichts.

Lex8
01.07.2014, 17:41
Also:

Ich habe mir jetzt einen Code geschrieben, welcher ein Dokument in den Vordergrund öffnet. Juhu stolz bin :D

Sub Kräfteübersicht()
Pfad = "F:\BPK_RE_FREMD\2014 BLS EINSATZ\Vorlagen Kräfte\Kräfteübersicht Vorlage..doc"
Dim WdApp As Object
Dim wdDok As Object
Set WdApp = CreateObject("Word.Application")
Set wdDok = WdApp.Documents.Open(Filename:=Pfad, ReadOnly:=True)
WdApp.Visible = True
WdApp.WindowState = 1
WdApp.Activate
Set wdDok = Nothing
Set WdApp = Nothing
End Sub




Jedoch verliere ich den Stolz schon wieder wenn ich auf die nächste Sache schaue.

Bei dem Code öffnet sich das Dokument auf "I". Sollte das in I nicht sein öffnet er es in J. JEDOCH IM HINTERGRUND :entsetzt:


Sub Bestatterliste()
If Dir("I:\Bestatterliste\Verständigungsliste Bestatter.doc") <> "" Then
CreateObject("word.application").Documents.Open("I:\Bestatterliste\Verständigungsliste Bestatter.doc").Application.Visible = True
End If
On Error Resume Next
If Dir("J:\Bestatterliste\Verständigungsliste Bestatter.doc") <> "" Then
CreateObject("word.application").Documents.Open("J:\Bestatterliste\Verständigungsliste Bestatter.doc").Application.Visible = True
End If
End Sub



Nun versuche ich den oberen Code von mir mit dem Unteren zu Verknüpfen, dass beides klappt.

Bitte um Hilfe.

Gruß lex

GMG-CC
01.07.2014, 17:42
@ haklesoft:

Zugegeben, vollkommen OT aber es muss sein :grins: :
Wann benennst du dich eigentlich um? Haklesoft heißt jetzt ja schließlich Cottonelle. :mrcool:
Sagt die Werbung.

Lex8
01.07.2014, 18:03
Jetzt hab ich die Mappe geschlossen und wieder geöffnet,
nun geht das Erste Dokument wieder nur im Hintergrund auf.

Bin drauf gekommen, dass es an dem VBA Passwort liegt.
wenn ich das Passwort entsperrt habe, öffnet das Dok im VOrdergrund,

wenn ich das Passwort nicht eingegeben habe dann im Hintergrund,

auch komisch oder?
kann mir bitte einer Helfen?

Gruß Lex

Nepumuk
01.07.2014, 19:03
Hallo,

probiers mal mit: AppActivate "Microsoft Word"

haklesoft
01.07.2014, 23:06
@ haklesoft:

Zugegeben, vollkommen OT aber es muss sein :grins: :
Wann benennst du dich eigentlich um? Haklesoft heißt jetzt ja schließlich Cottonelle. :mrcool:
Sagt die Werbung.Hi Günther,

klar OT. Ne, ne: da haste nicht richtig hingeschaut. Nur die feuchte Variante wird umgetauft, die Weiche nicht! :boah:

Jau: bei mir gehts manchmal feucht fröhlich zu. Ist aber kein Grund mich umzunennen. :p

Lex8
02.07.2014, 08:14
Leider kommt der Fehler:

Laufzeitfehler 5

ungültiger Prozedereablauf.

gruß lex

Nepumuk
03.07.2014, 07:55
Hallo,

meine Schuld, ich hab nicht an den Dokumententitel gedacht.

AppActivate "Meindokument.doc - Microsoft Word"