Forum: PC-Programmierung WORD 2010 - Makro aus Vorlage im Autostart-Ordner beim öffnen eines beliebigen Dokumentes starten


von Stefan W. (swessels)


Lesenswert?

Hallo zusammen,

ich suche eine Möglichkeit, ein in einer Vorlage, welche sich im 
Autostartordner befindet, befindliches Makro bei jedem öffnen eines 
beliebigen Dokumentes auszuführen.

Die Routine Document_Open() in ThisDocument des Makros wird nicht 
ausgeführt.

HAbt Ihr da eine Idee?

Danke und Gruß,
Stefan

von Marco G. (grmg2010)


Lesenswert?

Mal ausprobiert, ob es für alle Vorlagen gilt. Liegt die Vorlage direkt 
drin oder als Verknüpfung?

von Stefan W. (swessels)


Lesenswert?

Die Vorlage liegt direkt im Autostart Ordner.

von Marco G. (grmg2010)


Lesenswert?

Programme startet Windows nicht direkt aus dem Autostart. Vielleicht ist 
das als Makro gleich. Probiers mal als Verknüpfung.

von Sascha W. (sascha-w)


Lesenswert?

Stefan W. schrieb:
> Die Routine Document_Open() in ThisDocument des Makros wird nicht
> ausgeführt.

Also wenn sich das Makro in der normal.dot befindet geht's.
In einem beliebigen anderen Dokument, egal ob im Autostart, sollte die 
Funktion einmalig beim öffnen des selbigen ausgeführt werden.


Sascha

von Stefan W. (swessels)


Lesenswert?

Hallo zusammen,

ich habe es, zugegebnermaßen mit Hilfe von Google, wie folgt 
hinbekommen:

Eine Klasse:
1
'Class dWD_REM
2
Option Explicit
3
4
Private WithEvents clWD As Word.Application
5
6
Private Sub class_initialize()
7
    Set clWD = Application
8
End Sub
9
10
Private Sub clWD_DocumentOpen(ByVal doc As Document)
11
    Call Change_ARF.rem_XXX
12
End Sub

ein Modul:
1
Private myClass As clWD_REM
2
Dim myDoc As Document
3
Dim myTable As Table
4
Const replStr As String = "___"
5
6
Public Sub AutoExec()
7
    Set myClass = New clWD_REM
8
End Sub

Jetzt aber ein neues Problem:
Wenn ich ein Dokument manuell öffne funktioniert alles. Sobald das 
Programmgesteuert geschieht funktioniert es nicht :-(

Hintergrund des Ganzen:
In einer DAtenbank sind diverse Word-Dokumente als BLOB abgelegt. Diese 
werden mit einer eigenen Java-Applikation verwaltet und mit SAP Daten 
verknüpft.

Unsere QS möchte das wir in allen Dokumenten (mehrere Tausend)bestimmte 
Änderungen durchführen, das möchte ich natürlich nicht von Hand machen.

Der Export der Dokumente ist problemlos Möglich, der Import allerdings 
nur jeweils einzeln. Zugriff auf die DB bekommen wir natürlich 
nicht.....

Ich geh dann mal weitertüfteln.

Gruß,
Stefan

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

Mal noch ein wenig Input ...
was heißt bei dir programmgesteuert?
Du kannst die Dateien nur über die vorgesehene Verwaltungsoberfläche 
öffen?


Sascha

von Stefan W. (swessels)


Lesenswert?

Sascha W. schrieb:
> was heißt bei dir programmgesteuert?

Moin,

die Java - Anwendung übergibt das, auf der in der Datenbank vorliegenden 
Vorlagendatei (keine Dokumentvorlage im Sinne von Office!) basierende 
und mit SAP - Daten angepasste, Dokument direkt an MS Word.

Diese Vorlagendateien sind mit einer Dokumentvorlage in einem 
Netzwerklaufwerk verknüpft.

Ob dabei eventuell Events unterdrückt werden kann ich leider nicht 
sagen. Der Quelltext der Java Anwendung liegt mir nicht vor.

Interessanterweise funktioniert es, wenn ich das Makro direkt ind die 
verknüpfte Vorlage integriere. Das ist allerdings nicht ganz so schön, 
da es noch alte Vorlagendokumente gibt, dren Verknüpfung auf einen nicht 
mehr existierende Ordner verweist. Die werden natürlich nicht erfasst.

Auf jeden Fall: Danke für Deine Mühe!

Gruß,
Stefan

: Bearbeitet durch User
von Sascha W. (sascha-w)


Lesenswert?

Stefan W. schrieb:
> Sascha W. schrieb:
>> was heißt bei dir programmgesteuert?
>
> Moin,
>
> die Java - Anwendung übergibt das, auf der in der Datenbank vorliegenden
> Vorlagendatei (keine Dokumentvorlage im Sinne von Office!) basierende
> und mit SAP - Daten angepasste, Dokument direkt an MS Word.
klingt jetzt nicht so als ob du da vollautomatisch einige 100 Dateien 
verarbeiten könntest.
Dann könnte man die VBA-Funktion auch über einen Button starten.

> Diese Vorlagendateien sind mit einer Dokumentvorlage in einem
> Netzwerklaufwerk verknüpft.
>
> Ob dabei eventuell Events unterdrückt werden kann ich leider nicht
> sagen. Der Quelltext der Java Anwendung liegt mir nicht vor.
Je nach dem wie das in der Javaanwendung implementiert ist wird u.U. 
eine 2. Instanz von Word gestartet, müsste man mal schauen ob dort 
Dateien aus dem Startordner geladen werden.
Interessant sind auch immer die Sicherheitseinstellungen zur Ausführung 
von VBA-Code, gerade im Zusammenhang mit Netzlaufwerken.

Sascha

von c-hater (Gast)


Lesenswert?

Marco G. schrieb:

> Programme startet Windows nicht direkt aus dem Autostart.

Unsinn, natürlich tut es das.

> Vielleicht ist
> das als Makro gleich. Probiers mal als Verknüpfung.

Das Makro selber wird Windows natürlich nie direkt starten, allenfalls 
das "Dokument", welches es enthält (und das natürlich dann dadurch, dass 
es die für das Dokument als "zugehörig" registrierte Anwendung startet 
und der den Namen des Dokuments als Parameter übergibt).

Es spielt es keinerlei Rolle, ob das Dokument nun direkt im Autostart 
liegt oder nur eine Verknüpfung im Autostart darauf verweist. Mit einer 
Verknüpfung könnte man nur Windows die Arbeit abnehmen, erstmal 
herausfinden zu müssen, welche Anwendung für das Dokument zu starten 
ist. Einfach dadurch, dass man die Verknüpfung nicht auf das Dokument 
zeigen läßt, sondern auf die gewünschte Anwendung und in den 
Eigenschaften der Verknüpfung selber von Hand den Pfadverweis auf das 
Dokument als Parameter hinzufügt.

von Stefan W. (swessels)


Lesenswert?

Halo zusammen,

es funktioniert soweit. Die
Anwendung erzeugt für jedes Dokument eine neue nstnz von Word. 
Allerdings wird jedesmal ein neues Dokument erzeugt und nicht ein 
Dokument aus der Datenbank geöffnet.

Also document_new anstatt document_open.

Allerdings machen mir die Makrosicherheitseinstelluneg einen Stich durch 
die Rechnung. Also wird das leider nichts mit dem Makron im (Word) 
Auutostart Ordner.

Die Variante mit einem Button ist bei uns nicht anwendbar, da die 
Änderung auch beim direkten Drucken aus der Java - App vorgenommen 
werden muss.

Gruß,
Stefan

von Sascha W. (sascha-w)


Lesenswert?

Stefan W. schrieb:
> Halo zusammen,
>
> es funktioniert soweit. Die
> Anwendung erzeugt für jedes Dokument eine neue nstnz von Word.
> Allerdings wird jedesmal ein neues Dokument erzeugt und nicht ein
> Dokument aus der Datenbank geöffnet.
>
> Also document_new anstatt document_open.
Ahh

> Allerdings machen mir die Makrosicherheitseinstelluneg einen Stich durch
> die Rechnung. Also wird das leider nichts mit dem Makron im (Word)
> Auutostart Ordner.
du kannst dir selber ein Zertifikat ausstellen (selfcert.exe) und damit 
die Datei die den VBA-Code enthält signieren. Damit das auf anderen 
Rechnern was nützt musst du das Zertifikat dort 1x normal und als 
Vertrauenswürdige Zertifizierungsstelle importieren.

Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.