Benutzer mit den meisten Antworten
Verweis auf MSHTML.TLB bezw. MSHTML.DLL funktioniert nicht

Frage
-
Ich habe MS VB 2008 Express in Betrieb. Dies mit XP Service Pack 3
Ich arbeite an Browsersteuerungen (Internet-Explorer 8)
Das Öffnen, Navigieren, usw. des Browsers IE läuft einwandfrei
Der Zugriff auf die Elemente des Browser-Dokuments funktioniert unter VB8 nicht
(Bei VBA mit Excel ist alles i. O.)Die MSHTML.DLL hat Version 8.0.6001.19190
Die MSHTML.TLB hat Version 8.0.18702Das Problem liegt in der Unmöglichkeit einen Verweis auf die MSHTML-Bibliotheken zu erstellen.
Versuche ich es mit MSHTML.DLL kommt eine Meldung "Es konnte kein Verweis hunzugefügt werden"
Versuche ich es mit MSHTML.TLB hängt das Programm auf.Ich komme nicht mehr weiter, habe auch nichts in den Foren gefunden, das ich interpretieren kann.
Danke für Hinweise
Roland Burkhard
Antworten
-
Hallo Roland,
vorausgesetzt Dein System ist fehlerfrei aufgesetzt, sollten Dir zwei Möglichkeiten zur Verfügung stehen auf die HTML Objektbibliothek zu verweisen:
1.) Unter Projekt => Verweis hinzufügen > .NET
Hier sollte mind. ein Assembly "Microsoft.Mshtml" vorhanden sein. (Ansonsten wird dies über die Office PIA installiert)2.) Unter Projekt => Verweis hinzufügen > COM
Hier findet man einen Verweis "Microsoft HTML Object Library" (entspricht der MSHTML.TLB)Auf die MSHTML.DLL kann nicht verwiesen werden, da diese keine Typinformationen beinhaltet.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 19. März 2012 14:58
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19
-
Hallo Roland,
keine Frage, dass eine Lösung auch anderen Personen helfen würde. Aber offensichtlich ist es so, dass von diesem Problem nicht viele betroffen sind. So kann ich bspw. auf zwei unterschiedlichen Systemen den Verweis auf MSHTML.TLB ohne weiteres hinzufügen. Mir scheint hier ein Problem vorzuliegen, das mehr oder weniger spezifisch für Dein System ist.
Als Workaround kannst Du versuchen das notwendige Interop-Assembly für MSHTML.TLB selber über das SDK Tool "tlbimp" zu erstellen. Basierend auf diesem Forenbeitrag, der ein ähnliches Problem mit VS2010 beschreibt ein Batch File, das diesen Vorgang unterstützt:SET PATH=%PATH%;%PROGRAMFILES%\Microsoft SDKs\Windows\v6.0A\bin set SRCTLB=mshtml.tlb set NAMESPACE=mshtml8 set VERSION=8.0.6000.18865 set PREFIX=Interop sn -k %TEMP%\%NAMESPACE%.snk TlbImp.exe /verbose /out:%TEMP%\%PREFIX%.%NAMESPACE%.dll /keyfile:%TEMP%\%NAMESPACE%.snk /namespace:%NAMESPACE% /transform:dispret /asmversion:%VERSION% /tlbreference:%SYSTEMROOT%\System32\stdole2.tlb %SYSTEMROOT%\System32\%SRCTLB%
Das generierte Interop-Assembly findest Du dann im lokalen %TEMP% Verzeichnis.Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 20. März 2012 09:51
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19
-
Das Problem ist gelöst
Ich habe die Variante 2 von Thorsten (19. 3) probiert. Dabei ist nicht das Programm abgestürzt, sondern es ist ca. 1 Minute nichts passiert. Dann war der Verweis da (Ich war in der Zwischenzeit Zähneputzen). In der Folge war die weitere Programmierung (Zugriff auf Webbrowser.Document....) möglich.
Vielen Dank für die Geduld und die Hinweise Thorsten.
Roland Burkhard
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19
Alle Antworten
-
Hallo Burkhard,
habe selber versucht die Registierung dieser DLL auf XP mit Visual Studio 2008 zu erreichen. Gleicher Fehler.
Hier eine Antwort auf Deine Frage : http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/169eba36-0360-49e4-8491-5aeb60a06bb7/
Vielleicht hilft Dir das? Wofür ist diese DLL?
schöne Grüsse Ellen
Ich benutze/ I'm using VB2008 & VB2010
-
Guten Tag und vielen Dank für den Hinweis Ellen
Ich habe das Zitat kurz gesichtet, mehr Fragen als gute Antworten.Ich werde nun folgendes tun, in dieser Reihenfolge
1. Die DLL und TLB-Dateien durch neuere Versionen ersetzen (bringt vermutlich nichts)
2. Den Internet-Explorer neu installieren (da erwarte ich eher eine Lösung)Im übrigen haben wir hier an meinem Arbeitsplatz (die Schweizerische Post) einen Explorer-Guru, den werde ich auch noch ansprechen.
Was mich interessiert: Konntest Du das Problem bei Dir lösen?
Funktion der MSHTML.DLL: Lesen und anzeigen der HTML-Seiten. Ich muss sie ansprechen um Textboxen zu befüllen und Buttons zu betätigen. Das geht normalerweise zuverlässig, auch bei mir im Geschäft, allerdings mache ich es hier mittels VBA/Excel. Nur bei VBA scheint es Probleme zu geben. Microsoft scheint auch nicht zu helfen.
Bitte halte mich/uns auf dem Laufenden, wenn sich bei Dir Erfolge einstellen.
Danke und freundliche Grüsse
Roland (das ist der Vorname) ro.burkhard@bluewin.ch
-
Was mich interessiert: Konntest Du das Problem bei Dir lösen?
Hallo Roland,
nein nicht. Die Frage wäre zu klären, ob es für diese MSHTML.DLL nicht schon eine NET Klasse gibt.
Ich habe unter diesem Suchbegriff im US Forum mehrere dazu Beiträge gefunden. Da kommst Du hin, indem Du oben rechts von Deutschland auf United States wechselst.
schöne Grüsse Ellen
Ich benutze/ I'm using VB2008 & VB2010
-
Hallo Roland,
vorausgesetzt Dein System ist fehlerfrei aufgesetzt, sollten Dir zwei Möglichkeiten zur Verfügung stehen auf die HTML Objektbibliothek zu verweisen:
1.) Unter Projekt => Verweis hinzufügen > .NET
Hier sollte mind. ein Assembly "Microsoft.Mshtml" vorhanden sein. (Ansonsten wird dies über die Office PIA installiert)2.) Unter Projekt => Verweis hinzufügen > COM
Hier findet man einen Verweis "Microsoft HTML Object Library" (entspricht der MSHTML.TLB)Auf die MSHTML.DLL kann nicht verwiesen werden, da diese keine Typinformationen beinhaltet.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 19. März 2012 14:58
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19
-
Guten Tag und vielen Dank für die präzisen Angaben Thorsten
Ich habe beides ausprobiert und folgendes festgestellt
1) Via Projekt - Verweis - .NET erscheint Microsoft.Mshtml gar nicht
2) Via Projekt - Verweis - COM erscheint Microsoft HTML Library, die TLB-Datei (Version 4)
Nach Click stürzt das Programm ab. Notorisch.Ich wäre sehr dankbar für weitere Hinweise; speziell wie ich mit dem PIA umgehen muss.
Ich bin überzeugt, eine Lösung würde ausser mir auch weiteren Personen helfen.Vielen Dank zum voraus
Roland Burkhard
-
Hallo Roland,
keine Frage, dass eine Lösung auch anderen Personen helfen würde. Aber offensichtlich ist es so, dass von diesem Problem nicht viele betroffen sind. So kann ich bspw. auf zwei unterschiedlichen Systemen den Verweis auf MSHTML.TLB ohne weiteres hinzufügen. Mir scheint hier ein Problem vorzuliegen, das mehr oder weniger spezifisch für Dein System ist.
Als Workaround kannst Du versuchen das notwendige Interop-Assembly für MSHTML.TLB selber über das SDK Tool "tlbimp" zu erstellen. Basierend auf diesem Forenbeitrag, der ein ähnliches Problem mit VS2010 beschreibt ein Batch File, das diesen Vorgang unterstützt:SET PATH=%PATH%;%PROGRAMFILES%\Microsoft SDKs\Windows\v6.0A\bin set SRCTLB=mshtml.tlb set NAMESPACE=mshtml8 set VERSION=8.0.6000.18865 set PREFIX=Interop sn -k %TEMP%\%NAMESPACE%.snk TlbImp.exe /verbose /out:%TEMP%\%PREFIX%.%NAMESPACE%.dll /keyfile:%TEMP%\%NAMESPACE%.snk /namespace:%NAMESPACE% /transform:dispret /asmversion:%VERSION% /tlbreference:%SYSTEMROOT%\System32\stdole2.tlb %SYSTEMROOT%\System32\%SRCTLB%
Das generierte Interop-Assembly findest Du dann im lokalen %TEMP% Verzeichnis.Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 20. März 2012 09:51
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19
-
Das Problem ist gelöst
Ich habe die Variante 2 von Thorsten (19. 3) probiert. Dabei ist nicht das Programm abgestürzt, sondern es ist ca. 1 Minute nichts passiert. Dann war der Verweis da (Ich war in der Zwischenzeit Zähneputzen). In der Folge war die weitere Programmierung (Zugriff auf Webbrowser.Document....) möglich.
Vielen Dank für die Geduld und die Hinweise Thorsten.
Roland Burkhard
- Als Antwort markiert Robert Breitenhofer Mittwoch, 28. März 2012 10:19