اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

تحديد طابعة معينة للطباعة في الكود


إذهب إلى أفضل إجابة Solved by أ / محمد صالح,

الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

أخواني الكرام

كيف يمكن تحديد طابعة معينة في كود الطباعة وهي ( EPSON LQ-690 ) مع العلم بأنها الطابعة الإفتراضية

والسبب أنه تتم الطباعة على طابعة الليزر في حال كانت تعمل .

رابط هذا التعليق
شارك

أخي الكريم الجزيرة

تتم الطباعة على الطابعة الافتراضية لا على طابعة أخرى مهما يكون عدد الطابعات الموصل بالجهاز

ولا ستعمال طابعة غير الافتراضية يجب تنشيطها أولا باستعمال


ActivePrinter = "EPSON LQ-690"

ثم أمر الطباعة

  • Like 2
رابط هذا التعليق
شارك

أخي العزيز / محمد صالح

للأسف لم تفلح الطريقة بعد تجربتها تظهر نافذة ايرور

المشكلة أنه عند طباعة أي شئ على طابعة الليزر لابد من أغلاق الاكسل ومن ثم فتح البرنامج كي استطيع طباعة سند القبض على طابعة الابسون

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

رابط هذا التعليق
شارك

  • أفضل إجابة

أخي الكريم الجزيرة

كود 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

وفقنا الله وإياكم لكل خير

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم و رحمة الله وبركاته

بعد اذنك استاذ ماس

كما قلت الخطأ في اسم الطابعة

لذلك

قم بتسجيل ماكرو

اضغط Ctl+P

يظهر مربع حوار الطباعة

يجب هنا الآن ان تختار الطابعة يدويا حتى وان كانت موجودة امامك

ثم موافق

انهي تسجيل الكود

اذهب الى الكود الذي تم تسجيلة

انسخ السطر الخاص باسم الطابعة من هذا الكود

وضعه في الكود الخاص بك

باذن الله سوف تنجح التجربة

مع التحية

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information