سؤال

أنا الحفاظ على التطبيق الذي كان مكتوب في 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

Ref: http://backspacetab.com/error-91/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top