اذهب الي المحتوي
أوفيسنا

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

قام بنشر

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

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

كيف يمكن تحديد طابعة معينة في كود الطباعة وهي ( 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

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

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

ثم موافق

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

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

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

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

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

مع التحية

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information