أوله كائن Excel التلاعب يسبب خطأ وقت التشغيل '91'
-
22-07-2019 - |
سؤال
أنا الحفاظ على التطبيق الذي كان مكتوب في Visual Basic 6.0 و يجعل من استخدام عدة عناصر تحكم OLE Excel.Sheet.8
فئة الكائنات.العديد من المستخدمين الحصول على الخطأ التالي عندما تصل إلى نقطة في التعليمات البرمجية التي يحاول التلاعب excel الكائنات.
خطأ وقت التشغيل '91':كائن متغير أو باستخدام متغير كتلة لم يتم تعيينها
وفيما يلي أمثلة التعليمات البرمجية التي تسبب هذا الخطأ.أعتقد أن مسألة يحدث في:
Set oExcel = oleXl.object
وفيما يلي النقاط في القانون حيث أنه يحدث:
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
...
هل هناك وضع معين أو بيئة فيها هذا الخطأ سوف تولد من هذا الخط من التعليمات البرمجية أو الطريقة التي يمكنني التأكد من الكائن سوف يكون دائما موجودا في هذه النقطة في القانون ؟
الخطأ لا يحدث إلا في بعض الأحيان, وأنا لا يمكن أن تتكاثر على المطور آلة على الإطلاق.أنا أيضا لم يكن لديك الوصول إلى آلات أنه يحدث ، ولكن يبدو أن واجه عندما يكون هناك مثيل EXCEL.EXE عملية تشغيل.
المحلول
وعندما تحصل على وقت التشغيل-خطأ 91، يمكنك الرهان هناك كائن غير مهيأ في مكان ما في البيان. وبعبارة أخرى، تحاول استخدام خصائص أو أساليب متغير / وجوه بقيمة لا شيء.
في الأمثلة الخاص بك، oleXl، oleXlFx، وoleExcel وربما لا شيء. لذلك عند الإشارة إلى ممتلكاتهم .object، قمت بتشغيل RTE.
وفي مكان ما في التعليمات البرمجية هذه المتغيرات لا بد من تهيئة إلى شيء. ابحث عن عبارات مثل Set oleXl = CreateObject("Excel.Application")
أو Set oleXl = New Excel.Application
واقتراح واحد. عندما تجد التصريحات التي بالفعل تهيئة هذه الكائنات OLE، تحقق لمعرفة كيفية ترميز معالجة الأخطاء. إذا كنت ترى مثل هذه الامور:
On Error Resume Next
Set oleXl = CreateObject(...
وإضافة اختبار للتأكد من مثيل الكائن
On Error Resume Next
Set oleXl = CreateObject(...
If oleXl Is Nothing Then
MsgBox "Hey, my object is Nothing!"
End If
نصائح أخرى
يقترح Microsoft نتمكن من إصلاح خطأ 91 من خلال إنشاء مفتاح تسجيل جديد.لإنشاء مفتاح جديد اتبع الخطوات أدناه.
- انقر على القائمة "ابدأ"
- نوع
Regedit
في مربع البحث - اضغط Enter
- حدد موقع الإدخال التالي في التسجيل.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server
- الآن حدد ملقم المعاملات و انقر على الحق في ذلك
- حدد New ثم اختر مفتاح
- اسم المفتاح كما
Debug
- انقر على الحق في التصحيح مفتاح اختيار جديد
- الآن حدد مفتاح اسم المفتاح كما
RunWithoutContext