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
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
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
Hallo,
Mal noch ein wenig Input ...
was heißt bei dir programmgesteuert?
Du kannst die Dateien nur über die vorgesehene Verwaltungsoberfläche
öffen?
Sascha
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
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
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.
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
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
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.