الجزيرة قام بنشر يناير 9, 2012 قام بنشر يناير 9, 2012 السلام عليكم ورحمة الله وبركاته أخواني الكرام كيف يمكن تحديد طابعة معينة في كود الطباعة وهي ( EPSON LQ-690 ) مع العلم بأنها الطابعة الإفتراضية والسبب أنه تتم الطباعة على طابعة الليزر في حال كانت تعمل .
أ / محمد صالح قام بنشر يناير 9, 2012 قام بنشر يناير 9, 2012 أخي الكريم الجزيرة تتم الطباعة على الطابعة الافتراضية لا على طابعة أخرى مهما يكون عدد الطابعات الموصل بالجهاز ولا ستعمال طابعة غير الافتراضية يجب تنشيطها أولا باستعمال ActivePrinter = "EPSON LQ-690" ثم أمر الطباعة 2
محمد يحياوي قام بنشر يناير 9, 2012 قام بنشر يناير 9, 2012 يمكنك فتح صندوق حوار لاختيار الطابعة بهذا الكود Application.Dialogs(xlDialogPrinterSetup).Show 1
الجزيرة قام بنشر يناير 10, 2012 الكاتب قام بنشر يناير 10, 2012 أخواني الكرام الأخ / mas123 و الأخ / يحياوي شكراً لكم ولمشاركتكم القيمة : )
الجزيرة قام بنشر يناير 10, 2012 الكاتب قام بنشر يناير 10, 2012 أخي العزيز / محمد صالح للأسف لم تفلح الطريقة بعد تجربتها تظهر نافذة ايرور المشكلة أنه عند طباعة أي شئ على طابعة الليزر لابد من أغلاق الاكسل ومن ثم فتح البرنامج كي استطيع طباعة سند القبض على طابعة الابسون وفي حالة عدم اغلاق الاكسل وطباعة سند قبض يتجه مباشرة الى الليزر وهذا يؤثر في الترحيل .
أ / محمد صالح قام بنشر يناير 10, 2012 قام بنشر يناير 10, 2012 ما نص رسالة الخطأ؟ أو يمكنك تصويرها بزر print screen 1
أ / محمد صالح قام بنشر يناير 10, 2012 قام بنشر يناير 10, 2012 جرب أن تستعمل المسار الكامل Application.ActivePrinter="EPSON LQ-690" 1
الجزيرة قام بنشر يناير 11, 2012 الكاتب قام بنشر يناير 11, 2012 نفس الرسالة أخي الكريم ولكن بدلاً من Global تغيرت إلى Application
أفضل إجابة أ / محمد صالح قام بنشر يناير 11, 2012 أفضل إجابة قام بنشر يناير 11, 2012 أخي الكريم الجزيرة كود activeprinter هو الخاص بتنشيط طابعة معينة للطباعة عليها ولا يوجد غيره لعمل ذلك فإما أن يكون الخطأ في اسم الطابعة أو في اتصال الطابعة بالجهاز وتأكد أنه تظهر أسفل رمز الطابعة كلمة ready (جاهز) قبل الطباعة ولمعرفة اسماء الطابعات الموصلة بالجهاز يمكنك استعمال هذا الكود Private Const PRINTER_ENUM_LOCAL = &H2 Private Const PRINTER_ENUM_CONNECTIONS = &H4 Private Declare Function EnumPrinters Lib "winspool.drv" _ Alias "EnumPrintersA" _ (ByVal flags As Long, _ ByVal name As String, _ ByVal Level As Long, _ pPrinterEnum As Any, _ ByVal cdBuf As Long, _ pcbNeeded As Long, _ pcReturned As Long) _ As Long Private Declare Function StrLen Lib "kernel32" _ Alias "lstrlenA" _ (ByVal Ptr As Long) _ As Long Private Declare Function StrCopy Lib "kernel32" _ Alias "lstrcpyA" _ (ByVal RetVal As String, _ ByVal Ptr As Long) _ As Long Private Function CopyStringFromPtr(ByVal pSource As Long) As String CopyStringFromPtr = Space$(StrLen(pSource)) StrCopy CopyStringFromPtr, pSource End Function Public Function GetPrinterNames() As Variant Dim fSuccess As Boolean, lBuflen As Long, lFlags As Long Dim aBuffer() As Long, lEntries As Long Dim iCount As Integer, aPrinters() As String lFlags = PRINTER_ENUM_LOCAL Or PRINTER_ENUM_CONNECTIONS Call EnumPrinters(lFlags, vbNullString, 1, 0, 0, lBuflen, lEntries) ReDim aBuffer(lBuflen \ 4) fSuccess = EnumPrinters( _ lFlags, _ vbNullString, _ 1, _ aBuffer(0), _ lBuflen, _ lBuflen, _ lEntries) <> 0 If fSuccess And lEntries > 0 Then ReDim aPrinters(lEntries - 1) For iCount = 0 To lEntries - 1 aPrinters(iCount) = CopyStringFromPtr(aBuffer(iCount * 4 + 2)) Next GetPrinterNames = aPrinters End If End Function Public Sub GetPrinterList() Dim aPrinters As Variant, i As Integer aPrinters = GetPrinterNames If IsArray(aPrinters) Then For i = 0 To UBound(aPrinters) Debug.Print aPrinters(i) Next End If End Sub لذلك يجب أولا التأكد من توصيل الطابعة وجاهزيتها وثانيا اسمها الصحيح ثم تستعمل activeprinter وفقنا الله وإياكم لكل خير 2
احمدزمان قام بنشر يناير 11, 2012 قام بنشر يناير 11, 2012 السلام عليكم و رحمة الله وبركاته بعد اذنك استاذ ماس كما قلت الخطأ في اسم الطابعة لذلك قم بتسجيل ماكرو اضغط Ctl+P يظهر مربع حوار الطباعة يجب هنا الآن ان تختار الطابعة يدويا حتى وان كانت موجودة امامك ثم موافق انهي تسجيل الكود اذهب الى الكود الذي تم تسجيلة انسخ السطر الخاص باسم الطابعة من هذا الكود وضعه في الكود الخاص بك باذن الله سوف تنجح التجربة مع التحية
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.