Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wer ist der Moniker?

Forumthread: Wer ist der Moniker?

Wer ist der Moniker?
16.09.2006 13:08:14
Thorsten
Mahlzeit,
Was macht der Moniker in meinem Rechner? - Folgendes Problem:
In "STRG!R10" stehen komplette Pfade zu Datein (.xls/.mdb/.pdf/.doc)
oder eine Web-Adresse (diese könnte ich zur Not noch auslagern, wenn dafür ein anderes Makro gebraucht wird).
Der Pfad ändert sich durch vorher getroffene Auswahl.
Wie muss das Marko aussehen um den Pfad zu öffnen?
Bei meinem Versuch erscheint: "Systemfehler ... Datei konnte durch Moniker nicht geöffnet werden."

Sub Öffne_LinkEX()
Dim s
Set s = CreateObject("shell.application")
ActiveWorkbook.FollowHyperlink "STRG!R10"
End Sub

Für Hilfe schonmal besten Dank,
Gruß Thorsten
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wer ist der Moniker?
16.09.2006 16:49:53
Reinhard
Hi Thorsten,
Moniker las ich bei dir zum ersten Ma, nachfolgend steht eine Kurzbeschreibung.
Option Explicit
Sub Öffne_LinkEX()
Dim s As Object, Pfad As String
Pfad = "C:\Test\"
Worksheets("STRG").Range("R10") = "Beispiel.xls"
Set s = CreateObject("shell.application")
ActiveWorkbook.FollowHyperlink Pfad & Worksheets("STRG").Range("R10")
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Moniker sind gespeicherte Objekt Zustände wen Du so willst.
Du kannst Com Objekte über eine Classfactory erzeugen, CoCreateInstance
macht nichts anderes. Ein so erzeugtes Objekt hat immer nur einen
Grundzustand, den Du dann über entsprechende Befehle wieder füllen kannst.
(Denk mal an ein Dokument oder ähnliches).
Ein Moniker dient nun dazu eine Datei oder einen Zustand wieder
herzustellen. Der Moniker wird in einen Parser Vorgang geschickt, der dann
dafür sogrt das ein Objekt instanziert wird das genau dem Zustand entspricht
der in der Datei oder dem Zusammengesetten Moniker gespeichert wird.
Häufigste Anwendung ist die für CoGetObject. Hier kann ein Moniker
regisrtiert werden. Ist der entsprechende Datei Moniker bereits registriert
(d.h. die Datei geladen) wird das entsprechende Interface returniert. Ist
dies nicht der Fall wird über einen Moniker und IPersistFile die
entsprechende Datei geladen.
Beispiel Word. CoGetObject(L"C:\\Test.doc",...,IID_IDispatch,...) würde Das
Document Objekt liefern wenn Test.doc von Word schon bearbeitet wird und
wenn nicht, Word starten und das Objekt laden und Dir zurückgeben....
Weitere Literatur: Kraig Brockschmidt Inside OLE2 und Essential COM von Don
Box
Anzeige
AW: Wer ist der Moniker?
16.09.2006 20:12:54
Thorsten
Hallo Reinhard,
Das mit "Wer ist der Moniker?" war spassig gemeint. Ich meine,
ich wollte nicht, dass jemand für mich die Recherche übernimmt.
Aber Top-Erklärung - Besten Dank. Wobei ich eingestehen muss
nicht alles zu verstehen.
Ich hatte diese Fehlermeldung auch zum ersten mal gesehen. Allerdings kein Wunder,
da ich nur wenig mit VBA arbeite (einfach keine Ahnung - und finde nie dazu die Zeit).
Ich denke aber, dass deine ausführliche Beschreibung auch für einige Andere Leser interessant ist.
In der Datei ist nur Bild von Fehlermeldung (wer`s mal sehen will)
https://www.herber.de/bbs/user/36727.xls
Natürlich funkt auch dein VBA. Damit hast du mir wirklich sehr geholfen.
Also nochmal Danke und schönen Abend noch.
Gruß aus Leipzig
Thorsten
Anzeige
;
Anzeige

Infobox / Tutorial

Moniker in Excel: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

Um einen Link in Excel über VBA zu öffnen, kannst Du folgendes Makro verwenden. Der Moniker wird dabei genutzt, um eine Datei oder einen Zustand wiederherzustellen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und gehe zu Entwicklertools.

  2. Klicke auf Visual Basic, um den VBA-Editor zu starten.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf VBAProject (DeineDatei.xls) > Einfügen > Modul.
  4. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub Öffne_LinkEX()
        Dim s As Object, Pfad As String
        Pfad = "C:\Test\"
        Worksheets("STRG").Range("R10") = "Beispiel.xls"
        Set s = CreateObject("shell.application")
        ActiveWorkbook.FollowHyperlink Pfad & Worksheets("STRG").Range("R10")
    End Sub
  5. Schließe den VBA-Editor und führe das Makro aus, um den Link zu öffnen.


Häufige Fehler und Lösungen

Ein häufiges Problem, das Du haben könntest, ist die Fehlermeldung "kein Objekt für Moniker". Hier sind einige Tipps zur Behebung:

  • Fehler: "Systemfehler ... Datei konnte durch Moniker nicht geöffnet werden."

    • Lösung: Überprüfe, ob der Pfad zur Datei korrekt ist. Achte darauf, dass die Datei existiert und der Pfad in der Variable Pfad richtig angegeben ist.
  • Fehler: "CoGetObject: Objekt konnte nicht gefunden werden."

    • Lösung: Stelle sicher, dass der Moniker richtig registriert ist. Versuche, die Datei manuell zu öffnen, um sicherzustellen, dass sie nicht beschädigt ist.

Alternative Methoden

Wenn Du Schwierigkeiten mit dem Moniker hast, kannst Du auch andere Methoden in Betracht ziehen:

  1. Direkt öffnen ohne Moniker:

    • Anstatt den Moniker zu verwenden, kannst Du die Workbooks.Open Methode nutzen:
    Sub Öffne_Datei()
        Workbooks.Open "C:\Test\Beispiel.xls"
    End Sub
  2. Hyperlinks in Excel nutzen:

    • Stelle sicher, dass Du Hyperlinks in Deinen Zellen verwendest, die direkt auf die Dateien zeigen.

Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen könnten:

  • Öffnen einer PDF-Datei:

    Sub Öffne_PDF()
        Dim s As Object
        Set s = CreateObject("shell.application")
        s.Open "C:\Test\Dokument.pdf"
    End Sub
  • Verwendung von CoGetObject:

    Dim obj As Object
    Set obj = CoGetObject("C:\Test\Test.doc")

Achte darauf, dass Du die richtige Syntax verwendest, um Fehler zu vermeiden.


Tipps für Profis

  • Verwende Fehlerbehandlung: Nutze On Error Resume Next, um Fehler abzufangen und eine benutzerfreundliche Fehlermeldung anzuzeigen.

  • Dokumentation: Halte Deine Makros dokumentiert, besonders wenn Du mit Monikern arbeitest, um zukünftige Probleme zu vermeiden.

  • Teste in einer sicheren Umgebung: Bevor Du neue Makros in produktiven Dateien einsetzt, teste sie in einer sicheren Umgebung.


FAQ: Häufige Fragen

1. Was ist ein Moniker?
Ein Moniker ist ein Mechanismus zur Identifizierung von Objekten, die in Windows registriert sind. Es ermöglicht das Wiederherstellen von Objektzuständen.

2. Wie kann ich den Fehler "kein Objekt für Moniker" beheben?
Überprüfe den Pfad zur Datei und stelle sicher, dass sie existiert. Registriere den Moniker neu, falls nötig.

3. Was ist CoGetObject?
CoGetObject ist eine Funktion, die verwendet wird, um ein Objekt über seinen Moniker zu erhalten. Sie wird häufig in Kombination mit COM-Objekten verwendet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige