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

كود لطباعة ملفات pdf فى مجلد مع البرنامج


عمر ضاحى
إذهب إلى أفضل إجابة Solved by Amr Ashraf,

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

اساتذتي الكرام 

تحية طيبه 

طبعا كما هو واضح من عنوان الموضوع 

عندي مجلد جنب برنامج الاكسيس وليكن اسمه (PDFFILEs)

المجلد به عدة ملفات PDF وليكن اسمائهم 

01-aaaaa.pdf

02-bbbbb.pdf

03-cccccc.pdf

وهي ملفات عبارة عن نماذج عمل 

اريد ان اصمم ذر لكل ملف من هذه الملفات عند الضغط عليه يخيرني اما ان افتح الملف (PDF) (حتى اقدر احدد عدد النسخ المطلوبه للطباعه  او اطبع مباشرتا  (فى حالة النسخه الواحده)

انا عارف انه طلب بسيط بالنسبه لكم 

لكنى بحثت ولم اصل لشئ مفيد او لو وصلت لشئ يكن غير كامل وليس المطلوب 

واغلب المواضيع بخصوص ملفات ال pdf هي للطباعه من التقارير 

لكني لا اريد ان اطبع من التقارير بل عندي ملف من مصادر خارجيه واريد طباعته 

(لتوفير الجهد للوصول الى اماكن الملفات وفتحها وطباعتها 

ولكم جزيل الشكر 

 

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

انا وصلت لامر 

FollowHyperlink

لفتح ملف ال pdf من مجلد ال pdf 

واصبح بهذا الشكل 

FollowHyperlink "pdf/04- اشعار مباشرة.pdf"

لكن انا اريد ان اجعله اكثر دينماكية 

هجرب ادور على كود استطيع ان ادمجه مع هذا الكود 

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

جرب هذا الكود أخي عمر :

FollowHyperlink "C:\Users\UserName\Desktop\File.pdf"
SendKeys "^p"

تضع عنوان رابط الملف بين علامتي التنصيص بعد FollowHyperlink

تم تعديل بواسطه Moosak
رابط هذا التعليق
شارك

26 دقائق مضت, Moosak said:

جرب هذا الكود أخي عمر :

FollowHyperlink "C:\Users\UserName\Desktop\File.pdf"
SendKeys "^p"

تضع عنوان رابط الملف بين علامتي التنصيص بعد FollowHyperlink

انا اريد ان اطبع مباشرتا بدل الفتح 

 

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

20 دقائق مضت, عمر ضاحى said:

انا اريد ان اطبع مباشرتا بدل الفتح 

السلام عليكم .. فى حالة ان مفيش احد من الاخوة ساعدك هشارك معك فى الموضوع بس فيه ملاحظة حتى لو ساعدتك , عشان تطبع ملف خارجى لازم الويندوز يفتحه والا الناتج هيكون لغة Binary واشياء غير مفهومة الا اذا كان الملف تيكست اساسا على ما اعتقد , وبالتالى من الممكن عمل وحدة نمطية تقوم بعمل اللازم ولكن الملفات المراد طباعتها هتتفتح ببرنامج الPDF الخاص بيك وهيتم الطباعة مباشرة على الطابعة الافتراضية اللى عندك طبعا الموضوع هيكون بلمح البصر بس الملف هيفضل مفتوح ..

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

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

50 دقائق مضت, Amr Ashraf said:

السلام عليكم .. فى حالة ان مفيش احد من الاخوة ساعدك هشارك معك فى الموضوع بس فيه ملاحظة حتى لو ساعدتك , عشان تطبع ملف خارجى لازم الويندوز يفتحه والا الناتج هيكون لغة Binary واشياء غير مفهومة الا اذا كان الملف تيكست اساسا على ما اعتقد , وبالتالى من الممكن عمل وحدة نمطية تقوم بعمل اللازم ولكن الملفات المراد طباعتها هتتفتح ببرنامج الPDF الخاص بيك وهيتم الطباعة مباشرة على الطابعة الافتراضية اللى عندك طبعا الموضوع هيكون بلمح البصر بس الملف هيفضل مفتوح ..

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

LH TN LA;GI 

ما فى مشكله 

وهذه ملاحظه اشكرك عليها

ولك جزيل الشكر

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

  • أفضل إجابة

على بركة الله

اولا يتم عمل هذا الموديول وظيفته فتح الملف المطلوب وطباعته


Option Compare Database
Option Explicit


'Written by Andrew Fergus
'set a reference to Windows Script Host Object Model
'
' agpuzon
' added x64 support
'

Private Declare PtrSafe Sub Sleep Lib "kernel32" _
    (ByVal dwMilliseconds As Long)

Private Declare PtrSafe Function ShellExecute Lib _
    "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As LongPtr, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As LongPtr
Const SW_SHOWNORMAL = 1

Public Sub PrintAnyDocument(strPathAndFileNamePlusExtension As String)

Dim dfltPrinter As String
Dim newPrinter As Object

    ' Create a new WshNetwork object to access network properties.
    Set newPrinter = CreateObject("WScript.Network")
    'Get the name of the default printer
    dfltPrinter = Printer.DeviceName

    'Set the default to the new printer
    'USE YOUR ACTUAL PRINTER NAME BELOW
    'newPrinter.SetDefaultPrinter ("New Printer Name")

    'Pause
    Sleep 100

    'Print the pdf document
    'USE YOUR ACTUAL DOCUMENT NAME & PATH BELOW
    Call ShellExecute(0, "print", strPathAndFileNamePlusExtension, "", 0, SW_SHOWNORMAL)

    'Pause
    Sleep 2000 'wait for 2 seconds - increase this if the code doesn't appear to work

    'Pause
    Sleep 100

    'Set the printer back to the original default
    'newPrinter.SetDefaultPrinter (dfltPrinter)

End Sub

ثانيا يتم استدعاء الكود بالطريقة التالية :

PrintAnyDocument "D:\اسم الفولدر\FileName.pdf"

قمت بعمل نموذج طباعة وفيه حقلين نصيين اولهم اسم الملف المطلوب طباعته + الامتداد وبالتالى يمكنك طباعة اى ملف بأى امتداد ليس حصرا على PDF فقط

الحقل الثانى عدد مرات طباعة الملف

Capture.PNG.14271c4e796d9911d74b742e25f43f23.PNG

كود الطباعة بالشكل التالى :

Private Sub Command0_Click()
Dim FPath, SFileName, x As String
FPath = CurrentProject.Path
SFileName = Me.XFileName
x = FPath & "\" & SFileName

If IsNull(Me.XFileName) Then
MsgBox ("يجب اختيار ملف")
Else
Debug.Print x
For i = 0 To Me.XTimes - 1
PrintAnyDocument x
Next
MsgBox ("تمت الطباعة" & SFileName)
End If
End Sub

ملاحظات :

  • يجب ان يكون الملف فى نفس المسار مع القاعدة .
  • هذه مجرد بداية على عجالة على قدر معرفتى الضئيلة وبالتالى هناك مساحة للتطوير بأكثر من طريقة على حسب الاحتياج (ممكن اختيار ملف بدلا من كتابة اسمه - عمل قائمة تحتوى على الملفات فى المسار ليتم الاختيار منهم - الخ ... ) .

القاعدة مرفقة .. جرب ووافنى بالنتيجة

Print Any File.accdb

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

8 دقائق مضت, Amr Ashraf said:

على بركة الله

اولا يتم عمل هذا الموديول وظيفته فتح الملف المطلوب وطباعته


Option Compare Database
Option Explicit


'Written by Andrew Fergus
'set a reference to Windows Script Host Object Model
'
' agpuzon
' added x64 support
'

Private Declare PtrSafe Sub Sleep Lib "kernel32" _
    (ByVal dwMilliseconds As Long)

Private Declare PtrSafe Function ShellExecute Lib _
    "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As LongPtr, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As LongPtr
Const SW_SHOWNORMAL = 1

Public Sub PrintAnyDocument(strPathAndFileNamePlusExtension As String)

Dim dfltPrinter As String
Dim newPrinter As Object

    ' Create a new WshNetwork object to access network properties.
    Set newPrinter = CreateObject("WScript.Network")
    'Get the name of the default printer
    dfltPrinter = Printer.DeviceName

    'Set the default to the new printer
    'USE YOUR ACTUAL PRINTER NAME BELOW
    'newPrinter.SetDefaultPrinter ("New Printer Name")

    'Pause
    Sleep 100

    'Print the pdf document
    'USE YOUR ACTUAL DOCUMENT NAME & PATH BELOW
    Call ShellExecute(0, "print", strPathAndFileNamePlusExtension, "", 0, SW_SHOWNORMAL)

    'Pause
    Sleep 2000 'wait for 2 seconds - increase this if the code doesn't appear to work

    'Pause
    Sleep 100

    'Set the printer back to the original default
    'newPrinter.SetDefaultPrinter (dfltPrinter)

End Sub

ثانيا يتم استدعاء الكود بالطريقة التالية :

PrintAnyDocument "D:\اسم الفولدر\FileName.pdf"

قمت بعمل نموذج طباعة وفيه حقلين نصيين اولهم اسم الملف المطلوب طباعته + الامتداد وبالتالى يمكنك طباعة اى ملف بأى امتداد ليس حصرا على PDF فقط

الحقل الثانى عدد مرات طباعة الملف

Capture.PNG.14271c4e796d9911d74b742e25f43f23.PNG

كود الطباعة بالشكل التالى :

Private Sub Command0_Click()
Dim FPath, SFileName, x As String
FPath = CurrentProject.Path
SFileName = Me.XFileName
x = FPath & "\" & SFileName

If IsNull(Me.XFileName) Then
MsgBox ("يجب اختيار ملف")
Else
Debug.Print x
For i = 0 To Me.XTimes - 1
PrintAnyDocument x
Next
MsgBox ("تمت الطباعة" & SFileName)
End If
End Sub

ملاحظات :

  • يجب ان يكون الملف فى نفس المسار مع القاعدة .
  • هذه مجرد بداية على عجالة على قدر معرفتى الضئيلة وبالتالى هناك مساحة للتطوير بأكثر من طريقة على حسب الاحتياج (ممكن اختيار ملف بدلا من كتابة اسمه - عمل قائمة تحتوى على الملفات فى المسار ليتم الاختيار منهم - الخ ... ) .

القاعدة مرفقة .. جرب ووافنى بالنتيجة

Print Any File.accdb 412 kB · 0 downloads

ما شاء الله 

لك كل الشكر والعرفان 

بجرب الملف 

وممكن احول التكت بوكس الى كمبوبوكس واجعل مصدره جدول 

والجدول به مسار الملفات المراد طباعتها واسم الملف 

وبكده ممكن نعمل مثلا اكثر من مجلد 

مجلد لملفات ال PDF 

ومجلد اخر مثلا لملفات الورد 

ومجلد اخر لملفات الاكسيل ....

:fff::fff::fff::fff::fff::fff:

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

1 دقيقه مضت, عمر ضاحى said:

ما شاء الله 

لك كل الشكر والعرفان 

بجرب الملف 

وممكن احول التكت بوكس الى كمبوبوكس واجعل مصدره جدول 

والجدول به مسار الملفات المراد طباعتها واسم الملف 

وبكده ممكن نعمل مثلا اكثر من مجلد 

مجلد لملفات ال PDF 

ومجلد اخر مثلا لملفات الورد 

ومجلد اخر لملفات الاكسيل ....

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

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

3 دقائق مضت, Amr Ashraf said:

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

ظهرة هذه المشكله 

w1bvgbh.png

تم تعديل بواسطه عمر ضاحى
رابط هذا التعليق
شارك

تمام اشتغل كده 
 

x = FPath & "\" & SFileName

هذا السطر 

اذا كنت حابب اضيف فيه قيمه متغيره (اسماء المجلدات التى بها الملفات (فى نفس مسار البرنامج) (والمقصودة بالقيمه المتغيره هنا الكمبو بوكس )

هل ازيلد 

"\"

واضع مكانها مثلا me.FolderName

 

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

التغيير هيتم فى السطر ده :

FPath = CurrentProject.Path

لو محتاج تسنده لمتغير هوا كمان ممكن يبقى بالشكل ده :

FPath = Me.PathTxt

مثلا حقل كمان فى النموذج وتكتب فيه المسار المطلوب .

لو المسار ثابت ممكن يبقى بالشكل ده

FPath =  "C:\MyFiles"

على حسب ما تريد .

لو هتضيف كمان حقل نصى ممكن تتلاعب بمحتواه كما تريد .

بالتوفيق

مثلا كده :

Capture4.PNG.1f00e2e192ef543f838d3515fa266a98.PNG

 

تم تعديل بواسطه Amr Ashraf
رابط هذا التعليق
شارك

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