"Projekt oder Bibliothek kann nicht gefunden werden" für Standard-VBA-Funktionen


78

Ich muss also die Excel-App eines anderen auf meinem PC ausführen und erhalte die Meldung "Projekt oder Bibliothek kann nicht gefunden werden" für Standardfunktionen wie Datum, Format, Hex, Mitte usw.

Einige Untersuchungen zeigen, dass, wenn ich diesen Funktionen "VBA" voranstelle. wie in "VBA.Date" dann wird es gut funktionieren.

Webseiten schlagen vor, dass dies mit meinen Projektreferenzen auf meinem System zu tun hat, während sie auf dem Entwicklersystem in Ordnung sein müssen. Ich werde mich für einige Zeit mit anderen befassen und diese Anwendungen an viele andere verteilen, daher muss ich verstehen, was mit meinem Excel-Setup nicht stimmt, das ich reparieren muss, oder was in der geändert werden muss xls-Datei, damit sie auf einer Vielzahl von Systemen ausgeführt werden kann. Ich möchte vermeiden, dass jeder "VBA" verwendet. als explizite Referenz, aber wenn es keine ideale Lösung gibt, müssen wir das wahrscheinlich tun.

  • Wie mache ich "VBA"? implizit in meinen Projekteigenschaften / Referenzen / etc?

-Adam


Entwickeln Sie in einer Excel-Version und verteilen sie mit einer anderen Version an Benutzer?
Russ Cam

Das kann der Fall sein - ich weiß nicht, welche Version die Entwickler verwenden. Ich werde es prüfen.
Adam Davis


Ich musste vba eine Reihe von Funktionen voranstellen. bevor es mich die fehlende Bibliothek finden ließ.
kztd

Versuchen Sie, die Datei mit Excel online (Office 365) zu öffnen und unter einem neuen Dateinamen zu speichern. Das hat bei mir funktioniert!
Sean McCarthy

Antworten:


63

Ich habe Fehler bei Standardfunktionen gesehen, wenn ein Verweis auf eine völlig andere Bibliothek fehlte.

Starten Sie im VBA-Editor den Befehl Kompilieren über das Menü und überprüfen Sie im Dialogfeld Verweise, ob etwas fehlt, und versuchen Sie in diesem Fall, diese Bibliotheken hinzuzufügen.

Im Allgemeinen scheint es eine gute Praxis zu sein, den vollständigen VBA-Code zu kompilieren und das Dokument dann vor der Verteilung zu speichern.


4
Genau. Fehlende Referenzen werden deutlich als FEHLEND gekennzeichnet. In Ihrem Fall handelt es sich vermutlich um eine spätere Version der Excel-Bibliothek, die durch spätes Binden oder Auswählen der früheren Bibliothek umgangen werden kann. Ich glaube nicht, dass das Kompilieren des Codes bei fehlenden Referenzen helfen wird.
Fionnuala

Hmm. Ich erhalte eine Anfrage für ein VBAproject-Passwort. Die Handlung verdickt sich.
Adam Davis

1
Zeit, den ursprünglichen Entwickler zu finden, denke ich.
Toby Allen

Ich wollte nur hinzufügen, dass auch ich dieses Problem hatte, aber in einem ziemlich einzigartigen Szenario. Einige Maschinen hätten alle DLLs (einschließlich in diesem Fall Acrobat Distiller) und andere nicht. Ich brauchte immer noch die Maschinen ohne die Acrobat-DLL, um Makros auszuführen, die sie nicht verwendeten, und griff daher auf die VBA zurück. Namespace-Addition für diese Funktionen. Dies löste das Problem und funktionierte in beiden Szenarien.
Oliver Gray

Ich wollte nur darauf hinweisen, dass ich auf dasselbe Problem gestoßen bin, bei dem keine der als MISSING gekennzeichneten Referenzen vorhanden ist. Ich habe keine Lösung dafür gefunden, aber eine vorübergehende Lösung lautet: Öffnen Sie den Referenzdialog in VBE, berühren Sie nichts Klicken Sie einfach auf OK und das VBA-Projekt wird wieder normal.
Rick

32

Ich hatte das gleiche Problem. Das hat bei mir funktioniert:

  • Gehen Sie in VB zu Extras »Referenzen
  • Deaktivieren Sie die Bibliothek "Crystal Analysis Common Controls 1.0". Oder irgendeine Bibliothek.
  • Hinterlassen Sie einfach diese 5 Referenzen:
    1. Visual Basic für Anwendungen (Dies ist die Bibliothek, die die VBA-Sprache definiert.)
    2. Microsoft Excel-Objektbibliothek (Hiermit werden alle Elemente von Excel definiert.)
    3. OLE-Automatisierung (Hier werden die Typen zum Verknüpfen und Einbetten von Dokumenten sowie zur Automatisierung anderer Anwendungen und die "Installation" des COM-Systems angegeben, mit dem Excel mit der Außenwelt kommuniziert.)
    4. Microsoft Office (Hiermit werden Dinge definiert, die allen Office-Programmen gemeinsam sind, z. B. Befehlsleisten und Befehlsleistensteuerelemente.)
    5. Microsoft Forms 2.0 Dies ist erforderlich, wenn Sie ein Benutzerformular verwenden. Diese Bibliothek definiert Dinge wie das Benutzerformular und die Steuerelemente, die Sie in ein Formular einfügen können.
  • Dann Speichern.

Für mich musste ich "MicroSoft MapPoint 19.0 Object Library" deaktivieren, das in dem fraglichen Makro nicht verwendet wurde, aber an anderer Stelle in der Tabelle verwendet wurde.
ELW

2
Meins war "Microsoft Windows Common Controls 6.0 (SP4)", das auf meinem Excel 2010-Computer, aber auf einem Laptop mit Excel 2013 vorhanden war. Außerdem scheint es in Verwendung zu sein (ich erhalte "Steuerelement oder Referenz kann nicht entfernt werden; in Verwendung "wenn ich es deaktiviere), also muss ich herausfinden, was es verwendet und das loswerden ...
Rich

[Korrektur: Das oben Gesagte hätte sagen sollen " nicht auf einem Laptop ..."] Es stellte sich heraus, dass ich die Projektreferenz auf dem Computer, auf dem sie funktioniert, auch nicht entfernen kann. Ich habe jetzt versucht, es programmgesteuert zu entfernen (mit .VBProject.References, Schleifen über sie und Aufrufen von Remove auf dem fehlerhaften, um es zu entfernen) und erhalte "Laufzeitfehler '-2147319779 (8002801d)': Objektbibliothek nicht registriert“auf der Maschine ohne die Bibliothek, und ich erhalte‚Laufzeitfehler ‚57101‘: Kann nicht Standard - Referenz entfernen‘auf der Maschine , die hat die MSComctlLib Bibliothek vorhanden ist. Grrrr.
Rich

15

Ich habe genau dieses Problem festgestellt und festgestellt, dass auf dem Computer des Benutzers eine der Bibliotheken, von denen ich abhängig war, im Referenzdialog als "MISSING" markiert wurde. In diesem Fall war eine Office-Schriftartenbibliothek in meiner Version von Office 2007 verfügbar, jedoch nicht auf dem Client-Desktop.

Der Fehler, den Sie erhalten, ist ein vollständiger roter Hering (wie von Divo hervorgehoben).

Glücklicherweise habe ich nichts aus der Bibliothek verwendet, sodass ich es vollständig aus den XLA-Referenzen entfernen konnte. Ich denke, eine Erweiterung der von Divo vorgeschlagenen Best Practice wäre das Testen, um die XLA auf allen Office-Zielversionen zu überprüfen (auf keinen Fall eine schlechte Idee).


10

In meinem Fall war die Funktion AMBIGUOUS, wie sie in der VBA-Bibliothek (in meinen Referenzen vorhanden) und auch in der Microsoft Office-Objektbibliothek (ebenfalls vorhanden) definiert wurde. Ich habe die Microsoft Office-Objektbibliothek entfernt und voila! Sie müssen den VBA nicht verwenden. Präfix.


3

In meinem Fall konnte ich nicht einmal "Referenzen" im Visual Basic-Fenster öffnen. Ich habe sogar versucht, Office 365 neu zu installieren, und das hat nicht funktioniert. Schließlich habe ich versucht, Makros in den "Trust Center" -Einstellungen zu deaktivieren. Beim Neustart von Excel wurde die Warnmeldung angezeigt, dass Makros deaktiviert waren, und beim Klicken auf "Aktivieren" wurde die Fehlermeldung nicht mehr angezeigt.

Später habe ich alle Makros in den "Trust Center" -Einstellungen wieder aktiviert und die Fehlermeldung wurde nicht angezeigt!

Hey, wenn nichts anderes für Sie funktioniert, versuchen Sie es oben; es hat bei mir funktioniert! :) :)

Update: Das Problem ist zurückgekehrt, und so habe ich es beim zweiten Mal "behoben" :

Ich habe meine Arbeitsmappe in Excel online geöffnet (Office 365 im Browser, der ohnehin keine Makros unterstützt), sie unter einem neuen Dateinamen gespeichert (immer noch mit der Dateierweiterung XLSM) und in der Desktop-Software erneut geöffnet. Es funktionierte.


2
Das Öffnen der Arbeitsmappe in Excel online ist die einzige Lösung für dieses Problem, die bisher für mich funktioniert hat. Glauben Sie mir, ich habe alles versucht, vom abgesicherten Modus über die Neuinstallation / Reparatur von Office bis hin zum Neustart meines Computers und zum Beten. Ich wünschte, ich hätte mehr über Ursache und Wirkung hier verstanden, da dies bei makrofähigen .xlsmArbeitsmappen scheinbar zufällig vorkommt , wenn auch ziemlich selten - anekdotisch scheint es bei komplizierteren Dateien häufiger vorzukommen. Es scheint, dass ein Element der VBA-Bibliothek beschädigt werden kann, aber die Tatsache, dass Excel Online das
Problem

0

In meinem Fall überprüfte ich die Arbeit an meinem Bürocomputer (mit installiertem Visio) zu Hause (kein Visio). Obwohl VBA anscheinend an einfachen Standardfunktionen festhielt, bestand das Problem darin, dass ich Verweise auf die noch aktiven Visio-Bibliotheken hatte.


0

Ich habe Verweise auf eine AVAYA / CMS-Programmdatei gefunden. Völlig zufällig war dies in MS Access, nichts mit AVAYA zu tun. Ich habe AVAYA auf meinem PC und andere nicht. Dies erklärt, warum es auf meinem Computer funktioniert hat und nicht auf anderen - aber nicht, wie Access mit AVAYA verbunden wurde. Wie auch immer - ich habe gerade die Referenz deaktiviert und das scheint das Problem behoben zu haben


0

Ich habe diesen Fehler ungefähr zwei Jahre lang in mehreren XLSM-Dateien ein- und ausgeschaltet (was am ärgerlichsten ist, da an der Datei nichts falsch ist! - Ich vermute, dass verwaiste Excel-Prozesse Teil des Problems sind).

Die effizienteste Lösung, die ich gefunden hatte, war, Python mit oletools zu verwenden https://github.com/decalage2/oletools/wiki/Installund den VBA-Code aller Module zu extrahieren und in einer Textdatei zu speichern.

Dann benenne ich die Datei einfach in Zip-Datei um (Backup für alle Fälle!), Öffne diese Zip-Datei und lösche die Datei xl / vbaProject.bin. Benennen Sie wieder in XLSX um und sollten Sie loslegen.

Kopieren Sie den gespeicherten VBA-Code (der die Bereinigung von Zeilenumbrüchen, Kommentaren und anderen Dingen erfordert. Außerdem müssen fehlende Bibliotheken hinzugefügt werden.

Das hat mich gerettet, wenn andere Methoden es nicht getan haben.

YMMV.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.