"استدعاء إجراء غير صالح أو وسيطة" عند إعداد كائن الطابعة

StackOverflow https://stackoverflow.com/questions/737702

  •  09-09-2019
  •  | 
  •  

سؤال

لدي تطبيق VB6 الذي يعطي خطأ 5، "استدعاء إجراء غير صالح أو وسيطة" عندما يحاول البرنامج تعيين كائن الطابعة إلى طابعة محددة من مجموعة الطابعات. الطابعة في السؤال هي نوع من ناسخة / طابعة تعمل من خلال خادم الطباعة. لا يحدث الخطأ عند تعيين كائن الطابعة إلى طابعات أخرى محددة في المجموعة. أي أفكار ما قد يتسبب في الخطأ 5 في هذا الظرف؟ لست متأكدا مما يحدث بالضبط عند استخدام عبارة "Set Printer = X" في VB6 - هل تحاول الواجهة مع برنامج تشغيل الطابعة الفعلي في تلك المرحلة؟ هل من الممكن أن يتم التعرف على برنامج التشغيل كطابعة صالحة بواسطة كائن طابعة VB6 لسبب ما، مما يؤدي إلى خطأ "الوسيطة غير الصالحة"؟

هل كانت مفيدة؟

المحلول

"استدعاء الإجراء أو الوسيطة غير صالح" مخصص لخطأ وقت تشغيل VB 5.

أظن أن الخطأ 5 الذي تراه هو رمز الخطأ Win32، مما يعني "تم رفض الوصول".

اختلاف أخطاء وقت تشغيل VB من أخطاء Win32 - أظن أن الأمر يتعلق به مع جذور VB المسبقة حتى MS-DOS: http:/blogs.msdn.com/ericlippert/archive/2004/09/09/227461.aspx.. وبعد لست متأكدا من كيفية من المفترض أن تحدد التفسير الذي يجب استخدامه عند

نصائح أخرى

أنت تستخدم رمز مثل هذا لتعيينه الصحيح؟ ليس فقط محاولة تعيينه بواسطة سلسلة؟

   Dim strDeviceName As String
   Dim prnCurrent    As Printer

   For Each prnCurrent In Printers

      If UCase$(prnCurrent.DeviceName) = strDeviceName Then

         Set Printer = prnCurrent

         Exit For

      End If

   Next prnCurrent 

من أجل التوقف عن تغيير الطابعة الافتراضية التي تقوم بتشغيل هذا الرمز قبل تعيين الطابعة. ثم لن تضطر إلى ضبط الطابعة الافتراضية مرة أخرى. هذا أيضا يجعل اختيار الطابعة فريد من نوعه لبرنامجك وهو ما يريده معظم الناس.

' deassociate printer object from default system printer
Printer.TrackDefault = False

قمت بحل هذه المشكلة في MS Access 2007 VBA من خلال إدراج اسم الخادم جنبا إلى جنب مع اسم الطابعة.

Application.Printer = Application.Printers("\\servername\printername")

بدلا من

Application.Printer = Application.Printers("printername")

آمل أن يساعد هذا شخص آخر.

كنت أحصل على هذا الخطأ وبعد بضع ساعات من الإحباط وجد إجابتي. كانت قضية حساسة لحالة الأحرف. كان لدي عاصمة "S" عندما كان يجب أن يكون لدي حالة صغيرة ".

لذلك عندما بدا الكود مثل هذا:

XeroxReport = "\\Share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

سأحصل على خطأ 5

ولكن عندما غيرت ذلك إلى:

XeroxReport = "\\share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

بريستو عملت

قد ترغب في إلقاء نظرة على الصفحة التالية:

http://support.microsoft.com/kb/322710.

عند الطباعة في VB6، استخدم دائما مربع الحوار هذا بدلا من مربع الحوار الشائع الذي يأتي مع VB6. إنه أكثر موثوقية بكثير.

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