OLE Excel-Objektmanipulation verursacht Laufzeitfehler ‚91‘
-
22-07-2019 - |
Frage
Ich bin Aufrechterhaltung einer Anwendung, die Verwendung von mehreren Ole-Steuerelemente mit Excel.Sheet.8
Klasse Objekte in Visual Basic 6.0 und macht geschrieben wurde. Mehrere Benutzer erhalten die folgende Fehlermeldung, wenn sie einen Punkt im Code erreichen, die die Excel-Objekte zu manipulieren versucht.
Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht gesetzt
Im Folgenden sind Beispiele für den Code, der diesen Fehler auslösen. Ich glaube, dass das Problem tritt auf:
Set oExcel = oleXl.object
Hier sind die Punkte in dem Code, wo es passiert:
Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
Dim sTempStringA As String
Dim sTempStringB As String
'Set up excel sheet
centerform Me
Set oOutGrid = oleXlOutput.object
...
Private Sub Form_Load()
centerform Me
Set oOtherFx = oleXlFx.object
...
Private Sub Form_Load()
Dim iRet As Integer
Dim i As Integer
On Error GoTo Err_Handler
centerform Me
Call InitArray
Me.Caption = "TJUJ | Version " & version & " | Enter Custom Fx"
Set oBook = oleExcel.object
...
Gibt es eine spezielle Situation oder Umgebung, in der dieser Fehler aus dieser Codezeile erzeugt werden würde, oder eine Art und Weise, dass ich die Aufgabe sicherzustellen, wird immer an dieser Stelle zugänglich seine im Code?
Der Fehler tritt nur gelegentlich, und ich kann es gar nicht auf meinem Entwickler Maschine reproduzieren. Ich habe auch keinen Zugang zu den Maschinen, die es geschieht, aber es scheint, angetroffen zu werden, wenn es eine Instanz des laufenden EXCEL.EXE Prozesses ist.
Lösung
Wenn Sie Runtime-Fehler 91 zu erhalten, können Sie darauf wetten, es gibt ein nicht initialisierte Objekt irgendwo in der Erklärung. Mit anderen Worten, versuchen Sie, die Eigenschaften oder Methoden einer Variable / Objekt mit einem Wert von Nichts zu verwenden.
In Ihren Beispielen oleXl, oleXlFx und OleExcel sind wahrscheinlich nichts. Also, wenn Sie in ihrem .object Eigenschaft beziehen, lösen Sie die RTE.
Irgendwo in Ihrem Code haben diese Variablen zu etwas initialisiert werden. Geben Sie für Aussagen wie Set oleXl = CreateObject("Excel.Application")
oder Set oleXl = New Excel.Application
Ein Vorschlag; wenn Sie die Aussagen finden, die diese OLE-Objekte tatsächlich initialisieren, um zu sehen, wie sich die Fehlerbehandlung codiert. Wenn Sie sehen, Dinge wie diese:
On Error Resume Next
Set oleXl = CreateObject(...
fügen Sie einen Test, um sicherzustellen, das Objekt instanziiert wurde
On Error Resume Next
Set oleXl = CreateObject(...
If oleXl Is Nothing Then
MsgBox "Hey, my object is Nothing!"
End If
Andere Tipps
Microsoft schlägt vor, dass wir beheben können Fehler 91 durch einen neuen Registrierungsschlüssel zu erstellen. So erstellen Sie einen neuen Schlüssel unter den Schritten folgen.
- Klicken Sie auf das Windows-Startmenü
- Typ
Regedit
in das Suchfeld - Drücken Sie die Eingabetaste
- Suchen Sie den folgenden Eintrag in der Registrierung.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server
- Wählen Sie nun den Transaktionsserver und die rechte Maustaste auf dem
- Wählen Sie Neu und wählen Sie dann Taste
- Nennen Sie den Schlüssel als
Debug
- Rechtsklick auf die Debug-Taste und wählen Sie Neu
- Jetzt Key auswählen und den Schlüssel als
RunWithoutContext
Namen