Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OLE-Objekt per VBA aktualisieren

684 views
Skip to first unread message

Stefan Paesch

unread,
Jan 31, 2009, 2:17:40 PM1/31/09
to
Moin zusammen!

Ich habe eine DB, in der PDF-Dateien per "Objekt einfügen" (OLE-
Verknüpfung - heißt das glaube ich) verdrahtet wurden. Nun ist das so
gekommen, wie es kommen muss .... Die DB musste verschoben werden und
nun geht nix mehr.

Wie kann ich per VBA die Vernüpfungen aktualisieren?
Zu dieser Problematik habe ich vor längerer Zeit schon ein Posting
gelesen, ich finde es leider nicht wieder.

Besser ist es wohl, den direkten Pfad zu speichern (so lese ich das
aus zahlreichen Postings). Kann ich das in einem Rutsch mit erledigen?
Wie ?

Für Hinweise und Anregungen wäre ich dankbar.

Viele Grüße Stefan.
(ACC2003)

Jens Schilling

unread,
Feb 1, 2009, 3:49:05 AM2/1/09
to
Hallo, Stefan

Stefan Paesch wrote:
> Moin zusammen!
>
> Ich habe eine DB, in der PDF-Dateien per "Objekt einfügen" (OLE-
> Verknüpfung - heißt das glaube ich) verdrahtet wurden. Nun ist das so
> gekommen, wie es kommen muss .... Die DB musste verschoben werden und
> nun geht nix mehr.
>
> Wie kann ich per VBA die Vernüpfungen aktualisieren?
> Zu dieser Problematik habe ich vor längerer Zeit schon ein Posting
> gelesen, ich finde es leider nicht wieder.
>
> Besser ist es wohl, den direkten Pfad zu speichern (so lese ich das
> aus zahlreichen Postings). Kann ich das in einem Rutsch mit erledigen?
> Wie ?


Schau Dir doch mal Andrés Beispiel an :

http://www.access-im-unternehmen.de/205.0.html

Gruss
Jens


Thomas Möller

unread,
Feb 1, 2009, 4:00:40 AM2/1/09
to
Hallo Stefan,

Stefan Paesch schrieb:


> Ich habe eine DB, in der PDF-Dateien per "Objekt einfügen" (OLE-
> Verknüpfung - heißt das glaube ich) verdrahtet wurden. Nun ist das so
> gekommen, wie es kommen muss .... Die DB musste verschoben werden und
> nun geht nix mehr.
>
> Wie kann ich per VBA die Vernüpfungen aktualisieren?
> Zu dieser Problematik habe ich vor längerer Zeit schon ein Posting
> gelesen, ich finde es leider nicht wieder.
>
> Besser ist es wohl, den direkten Pfad zu speichern (so lese ich das
> aus zahlreichen Postings). Kann ich das in einem Rutsch mit erledigen?
> Wie ?

um wieviele Objekte geht es denn? IMHO solltest Du Dir da nicht all zu
viele Gedanken um eine automatisierte Migration machen sondern statt
dessen die Anpassungen von Hand vornehmen.

In Dein Formular fügst Du das Adobe-OCX ein. Dazu öffnest Du Dein
Formular in der Entwurfsansicht und wählst aus dem Menü "Einfügen" den
Punkt "ActiveX-Steuerelemente...". Dort suchst Du nach "Adobe PDF Reader".

Die Anzeige eines gespeicherten PFDs im Adobe-OCX kannst Du mit
folgendem Code erledigen:

- - 8< - - 8< - - 8< - -

Dim objOCX As AcroPDF

Set objOCX = Me!DeinPDFSteuerelement.Object

objOCX.LoadFile "C:\Dein\Pfad\DeineDatei.pdf"

Set objOCX = Nothing

- - 8< - - 8< - - 8< - -

Im Objektkatalog (F4) kannst Du Dir anzeigen lassen, welche Methoden das
OCX von Adobe noch bereitstellt. Dazu wählst Du als Bibliothek die
"AcroPDFLib" aus. Nach dem Du die Klasse "AcroPDF" markiert hast
offenbart das OCX Dir seine Eigenschaften und Methoden.


HTH
--
Thomas

Homepage: www.Team-Moeller.de

Foren

unread,
Feb 1, 2009, 5:54:49 AM2/1/09
to

Hallo Thomas,

vielen Dank für Deinen Tipp.

> um wieviele Objekte geht es denn? IMHO solltest Du Dir da nicht all zu
> viele Gedanken um eine automatisierte Migration machen sondern statt
> dessen die Anpassungen von Hand vornehmen.

sind nur 544 Datensätze :-(

Viele Grüße Stefan.


Thomas Möller

unread,
Feb 1, 2009, 8:55:58 AM2/1/09
to
Hallo Stefan,

Foren schrieb:


>> um wieviele Objekte geht es denn? IMHO solltest Du Dir da nicht all zu
>> viele Gedanken um eine automatisierte Migration machen sondern statt
>> dessen die Anpassungen von Hand vornehmen.
>
> sind nur 544 Datensätze :-(

Schau Dir mal diese Routine von Stephen Lebans an:
http://www.lebans.com/oletodisk.htm
(Link in einer Zeile)

Damit solltest Du die OLE-Objekte als Datei speichern können.

Sascha Trowitzsch

unread,
Feb 1, 2009, 6:27:49 PM2/1/09
to
Hi Thomas,

"Thomas Möller" <Thomas_N_...@Team-Moeller.de> schrieb im Newsbeitrag
news:6ulnvpF...@mid.individual.net...

Er hat gelinkte OLE-Objekte drin. Die wird er schwerlich auf Platte speichern
können, wenn das Link-Verzeichnis nicht mehr stimmt. ;-)

Ich habe übrigens gestern wegen dieses Threads zwei Stunden damit verbracht,
über OLE-Funktionen was rauszukriegen, wie die Links geändert werden könnten, da
es ähnliche Anfragen schon öfters gab.. Es klappt nicht - ist saukompliziert.
Statt mit dem OLE-API könnte man es sicher auch wie Lebans machen, der das Ganze
binär auseinander nimmt, aber es gibt zuwenig Unterlagen über den Aufbau der
OLE-Objekte, zumal die in unterschiedlichsten Variationen (OLE1, 2) in den
Feldern drin sein können.
EIn bisschen was findet man hier, aber es ist nicht vollständig genug:
http://msdn.microsoft.com/en-us/library/cc313062.aspx

Ciao, Sascha


Stefan Dase

unread,
Feb 2, 2009, 2:04:13 AM2/2/09
to
Hallo Stefan!

> Wie kann ich per VBA die Vernüpfungen aktualisieren?
> Zu dieser Problematik habe ich vor längerer Zeit schon ein Posting
> gelesen, ich finde es leider nicht wieder.

Ich habe die Aufgabe, den Pfad auf per OLE verknüpfte Dateien zu
aktualisieren, vor Jahren einmal über einen kleinen "Umweg" gelöst.

Du benötigst ein Formular mit einem Objektfeld, dass an das OLE-Feld der
Tabelle gebunden ist. Dieses kann auch unsichtbar im Hintergrund laufen!
Dann kannst du mittels VBA dem Feld ein neues Objekt zuweisen. Die
nötigen Schritte sind relativ simpel:

With Me!OLEFeldName
.Locked = False
.Class = "Excel.Sheet"
.OLETypeAllowed = acOLEEmbedded
.SourceDoc = sDateiName
.Action = acOLECreateEmbed
End With

Als Klasse hatte ich damals ermöglicht:
- "Excel.Sheet" für Excel,
- "Word.Document" für Word,
- "Powerpoint.Show" für PowerPoint.

Vielleicht hilft es weiter?

Grüße aus Bremen,
Stefan

Foren

unread,
Feb 3, 2009, 3:04:02 PM2/3/09
to
Hallo Sacha, hallo Stefan,

vielen Dank für Eure Mühen. Da habe ich schon mal einen Ansatz, an dem ich
mich hochhangeln kann. Wenn ich da was gebacken bekomme, poste ich es.

Viele Grüße Stefan.

Stefan Dase

unread,
Feb 4, 2009, 2:06:43 AM2/4/09
to
Stefan Dase schrieb:

> With Me!OLEFeldName
> .Locked = False
> .Class = "Excel.Sheet"
> .OLETypeAllowed = acOLEEmbedded
> .SourceDoc = sDateiName
> .Action = acOLECreateEmbed
> End With

Was mir gerade noch auffällt: "acOLECreateEmbed" fügt das Objekt in die
Tabelle ein, für einen Verweis müsste es ähnlich wie "acOLECreateLinked"
heißen.

Viele Grüße aus Bremen,
Stefan

Stefan Paesch

unread,
May 27, 2009, 6:40:37 PM5/27/09
to
"Sascha Trowitzsch" <n...@moss-soft.de> schrieb im Newsbeitrag
news:eMEzySM...@TK2MSFTNGP06.phx.gbl...
> Hi Thomas,
>
> "Thomas M�ller" <Thomas_N_...@Team-Moeller.de> schrieb im
> Newsbeitrag news:6ulnvpF...@mid.individual.net...
>> Hallo Stefan,
>>
>> Foren schrieb:
>>>> um wieviele Objekte geht es denn? IMHO solltest Du Dir da nicht all zu
>>>> viele Gedanken um eine automatisierte Migration machen sondern statt
>>>> dessen die Anpassungen von Hand vornehmen.
>>>
>>> sind nur 544 Datens�tze :-(

>>
>> Schau Dir mal diese Routine von Stephen Lebans an:
>> http://www.lebans.com/oletodisk.htm
>> (Link in einer Zeile)
>>
>> Damit solltest Du die OLE-Objekte als Datei speichern k�nnen.

>
> Er hat gelinkte OLE-Objekte drin. Die wird er schwerlich auf Platte
> speichern k�nnen, wenn das Link-Verzeichnis nicht mehr stimmt. ;-)
>
> Ich habe �brigens gestern wegen dieses Threads zwei Stunden damit
> verbracht, �ber OLE-Funktionen was rauszukriegen, wie die Links ge�ndert
> werden k�nnten, da es �hnliche Anfragen schon �fters gab.. Es klappt
> nicht - ist saukompliziert.
> Statt mit dem OLE-API k�nnte man es sicher auch wie Lebans machen, der das
> Ganze bin�r auseinander nimmt, aber es gibt zuwenig Unterlagen �ber den
> Aufbau der OLE-Objekte, zumal die in unterschiedlichsten Variationen
> (OLE1, 2) in den Feldern drin sein k�nnen.
> EIn bisschen was findet man hier, aber es ist nicht vollst�ndig genug:
> http://msdn.microsoft.com/en-us/library/cc313062.aspx
>
> Ciao, Sascha


Moin!

Also der Tipp http://www.lebans.com/oletodisk.htm hat mich schon deutlich
weiter gebracht.

Lebans hat in dem Form 'OleObjectInfo' ein Feld, in dem der Package- bzw.
der verlinkte Dateiname ausgegeben wird. Das ist das, was ich gesucht habe.
Nun kann ich den Pfad anpassen und direkt speichern.

Spricht aus Eurer Sicht etwas gegen einen Hyperlink?

Viele Gr��e Stefan.


Oliver Straub

unread,
May 28, 2009, 6:42:37 AM5/28/09
to
Hi!

> Also der Tipp http://www.lebans.com/oletodisk.htm hat mich schon deutlich
> weiter gebracht.
>
> Lebans hat in dem Form 'OleObjectInfo' ein Feld, in dem der Package- bzw.
> der verlinkte Dateiname ausgegeben wird. Das ist das, was ich gesucht
> habe. Nun kann ich den Pfad anpassen und direkt speichern.

Vorsicht, bei Package zeigt Lebans in diesem Feld den Namen der Icon-Source
an und nicht des Contents. Falls es dieselbe Datei ist, macht das aber
nichts.


Gruss
Oliver


Stefan Paesch

unread,
May 28, 2009, 3:18:16 PM5/28/09
to
"Oliver Straub" <oliver.s...@web.de> schrieb im Newsbeitrag
news:eSuJGE43...@TK2MSFTNGP02.phx.gbl...

Hallo Oliver,

wieder etwas dazu gelernt. Danke f�r den Hinweis.

Ich habe in den OLE-Feldern nur die Verlinkung der PDF�s"gespeichert". Die
eigentlichen Dateien liegen auf der Platte.
Manchmal hat man Gl�ck ..... :-).

Viele Gr��e Stefan.

0 new messages