Knowledgebase
2 Jun
5 Mrz
Ein Fehlermeldung in (Excel-) VBA, der mich seit einiger Zeit umtreibt:
“Die Objektbibliothek ist ungültig oder enthält Verweise Objektdefenitionen, die nicht gefunden werden konnten”
Der Compiler bleibt bereits in der Zeile “Option Explicit” eines beliebigen Moduls hängen. Die Verweise auf externe Module sind die Selben (klar, es wird auch immer die gleiche Excel-Datei verwendet), es sind auch alle in der gleichen Version installiert und verfügbar.
Das Problem ist, dass es nicht auf jedem Rechner und jeder Installation gleich ist. Auf den PCs wird Windows XP und Office XP mit einer selbsterstellten Unattended Installation aufgespielt, alle Rechner hängen am gleichen WSUS, so dass es theoretisch keine Unterschiede geben dürfte. Tut es aber.
Zufällig bin ich in den letzten Tagen auf die Problematik mit einem Update zum Killbit (KB960715) gestoßen, das Microsoft vollautomatisch verteilt. Dies verhindert eine korrekte Ausführung der OCX, meist blockiert das MSFlexGrid. Aber der Clou an der Geschichte ist: Das wird vom Internet-Explorer kontrolliert! Da muss man erstmal drauf kommen.
Im Endeffekt geht es nun darum, in der Registry unter
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\
all denjenigen OCXs den Wert von “Compatibility Flags” auf 0 (DWORD) zu setzen. Allerdings muss man ersteinmal wissen, welche Controls der VBA-Code verwendet. Hier hilft das kleine Tool ACM (AcctiveX Compatibility Manager), der alle AciveX-Controls in diesem Teil der Registry anzeigt. Nun hilft nur manuelles suchen, welche Controls Verwendung finden, bei diesen muss der Eintrag abgeändert werden.Am Besten raussuchen (ein schneller Weg ist RegmonNt/ProcessMonitor von Sysinternals), in einer .REG-Datei exportieren und diese dann verteilen und überall importieren.
siehe auch:
9 Okt
Ich hatte das Problem, dass Excel in einer Formel sich selbst die auszuwertenden Zellbereiche errechnen muss, mit denen dann weiterverfahren wird.
Als Beispiel steht in Zelle A1 und A2 jeweils eine 1, die Formel in einer beliebig Anderen. “Gesucht” ist im Endeffekt die Formel “=A1+A2″ mit dem Ergebnis “2″. Leider reicht es nicht aus, den Zellbezug so anzugeben:
=A1+”A”&2
Dies ergibt nur #WERT!
Aber Excel kann ja fast alles Rechnen, auch seine Zellbezüge. Dafür gibt es die Funktion INDIREKT:
=A1+INDIREKT(”A”&2)
Somit erhalten wir den gewünschten Wert 2.
Hätte mich schon sehr gewundert, wenn Excel hier eine Featurelücke gehabt hätte…
siehe MS KB 21393, Logoquelle
1 Aug
Wenn tatsächlich 80% der Geschäftslogik in Excel abgelegt sind, was bleibt dann noch für die vielen Mainframes mit Cobol und SAP?
Und wie wirkt sich die Nachkommanachlässigkeit (15. Stelle) von Excel auf die Zahlen aus?