كيف يمكنك منع مربع حوار الطباعة عند استخدام طريقة Excel PrintOut

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

سؤال

عندما أستخدم أسلوب PrintOut لطباعة كائن ورقة عمل إلى الطابعة، يتم عرض مربع الحوار "طباعة" (يظهر اسم الملف والطابعة الوجهة والصفحات المطبوعة وزر إلغاء) على الرغم من أنني قمت بتعيين DisplayAlerts = False.يعمل الكود أدناه في ماكرو Excel ولكن يحدث نفس الشيء إذا استخدمت هذا الكود في تطبيق VB أو VB.Net (مع التغييرات المرجعية المطلوبة لاستخدام كائن Excel).

Public Sub TestPrint()
Dim vSheet As Worksheet

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set vSheet = ActiveSheet
    vSheet.PrintOut Preview:=False

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

يحرر:تلقي الإجابة أدناه مزيدًا من الضوء على هذا (قد يكون مربع حوار Windows وليس مربع حوار Excel) ولكنها لا تجيب على سؤالي.هل يعرف أحد كيفية منع عرضه؟

يحرر:شكرًا لك على بحثك الإضافي، كيفن.يبدو إلى حد كبير أن هذا هو ما أحتاجه.لست متأكدًا من رغبتي في قبول رمز واجهة برمجة التطبيقات (API) بشكل أعمى مثل هذا.هل لدى أي شخص آخر أي معرفة حول مكالمات API هذه وأنهم يفعلون ما يزعمه المؤلف؟

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

المحلول

عندما تقول مربع حوار "الطباعة"، أفترض أنك تقصد مربع الحوار "طباعة xxx على" بدلاً من مربع حوار الطباعة القياسي (حدد الطابعة، وعدد النسخ، وما إلى ذلك).بأخذ المثال أعلاه وتجربته، هذا هو السلوك الذي رأيته - تم عرض عبارة "الطباعة الآن..." لفترة وجيزة ثم تم إغلاقها تلقائيًا.

ما تحاول التحكم فيه قد لا يكون مرتبطًا ببرنامج Excel، ولكنه بدلاً من ذلك يكون سلوكًا على مستوى Windows.إذا كان من الممكن التحكم فيه، فستحتاج إلى أ) تعطيله، ب) إجراء الطباعة، ج) إعادة التمكين.إذا فشل الرمز الخاص بك، فهناك خطر عدم إعادة تمكينه للتطبيقات الأخرى.

يحرر:جرب هذا الحل: كيف يمكنك منع مربع حوار الطباعة عند استخدام طريقة Excel PrintOut.يبدو أنه يصف بالضبط ما تبحث عنه.

نصائح أخرى

إذا كنت لا تريد إظهار مربع حوار الطباعة، فما عليك سوى إجراء اختبار ماكرو على النحو التالي؛لن يُظهر أي مربع حوار طباعة وسيكتشف الطابعة الافتراضية ويطبع على الفور.

sub  test()

 activesheet.printout preview:= false

end sub

قم بتشغيل هذا الماكرو وسيقوم بطباعة الورقة النشطة حاليًا دون عرض مربع حوار الطباعة.

تقوم استدعاءات واجهة برمجة التطبيقات (API) الموجودة في المقالة المرتبطة بواسطة Kevin Haines بإخفاء مربع حوار الطباعة كما يلي:

  1. احصل على مقبض نافذة حوار الطباعة.
  2. أرسل رسالة إلى النافذة لإخبارها بعدم إعادة الرسم
  3. إبطال النافذة، مما يفرض إعادة رسم لا يحدث أبدًا
  4. اطلب من Windows إعادة طلاء النافذة، مما يؤدي إلى اختفائها.

هذا أمر مبالغ فيه بعبارة ملطفة.

تعد مكالمات واجهة برمجة التطبيقات (API) آمنة، ولكن ربما تريد التأكد من تعيين تحديث الشاشة لمربع حوار الطباعة على True في حالة فشل التطبيق الخاص بك.

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