הדפסת ד''וח מאקסס על בסיס קובץ וורד
-
יש לי טופס מעוצב בוורד שאני צריך מידי פעם למלא בו פרטים ולהדפיס (וכן לשמור כ-PDF)
מכיוון שלאחרונה אני מוצא עצמי ממלא יותר מידי פעמים, ומכיוון שחלק מהשדות בו ניתנים לחישוב החלטתי לזרז את העניינים...
יצרתי טבלה באקסס להכנסת הפרטים (לדוגמה תאריך לידה) ושאילתא לחישוב שאר השדות (לדוגמה גיל).
כעת אני רוצה ליצור טופס בו יהיה ניתן למלא את הפרטים ההכרחיים ובתחתיתו יהיה כפתור "הדפס" שישמור את הד''וח כ-PDF בנתיב שאחליט.
מחיפוש ברשת לא מצאתי דרך נורמלית לייבא את הקובץ המעוצב מוורד לReport באקסס, להעתיקו יהיה מסובך...
האם יש אפשרות לבסס את המערכת על קובץ וורד חיצוני?
אודה לעזרה
תודה רבה.
-
@מנחם אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
@בערל
אולי לא הבנתי נכון?אבל למה לא לקשר אותו לטבלה באקסס
ולעשות קוד שיפתח את הקובץ בוורד וישמור אותו כ-PDF
אם זה הכיוון אפשר להתקדם הלאההבנת מצוין
אני יכול להשתמש בMail Merge בוורד שייקח את הנתונים מהשאילתא באקסס
השאלה אם ניתן ליצור כפתור בתחתית הטופס למילוי שיעשה את כל העבודה בהתבסס על הנתונים שמולאותודה רבה
-
@בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
Mail Merge
אם כך התשובה היא כן.
יש קודים מוכנים לכך, שבנויים על מיזוג שלם של מכתבים.
אם מדובר רק עם רשומה בודדת , אפשר לקצר את התהליכים?
אולי מכאן תוכל להתחיל -
@מנחם אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
אם כך התשובה היא כן.
יש קודים מוכנים לכך, שבנויים על מיזוג שלם של מכתבים.
אם מדובר רק עם רשומה בודדת , אפשר לקצר את התהליכים?
אולי מכאן תוכל להתחיליש לי בערך 13 רשומות
אני מנסה לעבור על הלינק שהבאת
אני אוחז בשורות של קביעת הנתונים.ActiveDocument.Bookmarks("Title").Select .Selection.Text = (CStr(Forms![frmPrivacy]![Title]))
תוכל להסביר על זה?
אני צריך קודם לבצע את המיזוג דואר בוורד או שהקוד כבר קובע?
מה הכוונה Bookmarks? איך הוא יודע למה אני מתכווין?את הנתונים אני מבין שהוא שולף מתוך טופס, אצלי מדובר בשאילתא. CStr זה שם הקובץ אקסס?
-
@בערל נפרק את הבעיה לשלבים:
א. צור שאילתא שתכיל רק את הרשומות שאותן אתה מעוניין להדפיס.
ב. צור מסמך וורד שימזג את הרשומות מהשאילתא הנ"ל לשדות המתאימים במסמך (מיזוג דואר)
ג. צור את הפונקציונאליות המתאימה בלחצן.מדבריך:
השאלה אם ניתן ליצור כפתור בתחתית הטופס למילוי שיעשה את כל העבודה בהתבסס על הנתונים שמולאו
אני מבין שאתה אוחז בשלב ג?
-
@בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
תוכל להסביר על זה?
הרעיון בקוד הנ"ל הוא לקבוע סימניות במסמך וורד, ואחר כך לשנות את הטקסט שלהם לפי השדות המתאימים.
אני צריך קודם לבצע את המיזוג דואר בוורד או שהקוד כבר קובע?
לפי הקוד - לא. ההשערה שלי היא שזו דרך להתחמק מכל מיני תיבות דו שיח. בעצם זה יישום עצמאי של הפונקציונאליות של מיזוג דואר, שבו הקוד מכניס את הערכים ישירות מהטופס.
מה הכוונה Bookmarks? איך הוא יודע למה אני מתכווין?
הוא לא באמת יודע, פשוט מי שהכין את הוורד נתן שם לסימניה שיעזור לו לזהות איזה שדה להכניס לסימנייה. למשל לסימנייה
Bookmarks("Title")
הוא מכניס את הערך של השדה Title בטופס. -
תודה רבה לכולם על המענה והעזרה הנרחבת
אני מבין שהקוד הנ''ל לא רלוונטי בשבילי
\@odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
אני מבין שאתה אוחז בשלב ג?
אכן!
\@מלא אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
@clickone אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
@בערל , אני מציע שתוריד ןתנסה את הקובץ ש @מלא הביא מהארכיון ( @מלא , תודה. אני אפילו שכחתי מזה...)
כי אני חושב שזה ממש מכסה את כל מה שרצית.הורדתי וניסיתי להבין מה הולך שם ולא בדיוק הבנתי איך זה עובד.
איפה אני ממלא פרטים חדשים? ישירות בטבלה?
אם יש לי עשרות שורות הוא ימזג את הכל? אני צריך רק את האחרון. -
-
@odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
@בערל לא בדקתי את הקוד של @clickone ואני לא יכול לייעץ לך לגביו. אם נשאר לך רק שלב ג, כלומר אתה אוחז במצב שאם אתה פותח את הוורד אתה רואה את הנתונים הנכונים מהטבלה, אז נשאר לכתוב רק את הקוד של הלחצן. זה לא כל כך קשה לדעתי. אם החלטת שזה הכיוון אעזור לך בשמחה.
הכל מוכן (חוץ מבעיה קטנה שוורד מציג נתוני זמן ותאריך ללא הפורמט שהגדרתי להם באקסס כמו כאן ), אשמח מאוד.
תודה רבה!
-
@odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
אז נשאר לכתוב רק את הקוד של הלחצן
זה מה שעושה הקוד שלי
@בערל
בגדול הקובץ שהעלתי אז היה קובץ זיפ עם קובץ וורד בפנים בשביל הדומא
אני לא מוצא אותו כעת, אולי ל @מלא יש אותו והוא יכול להעלות....
בכל מקרה, מה שאתה צריך, זה לשים את הטבלה והטופס שלך, לא משנה איך קוראים לטבלה ולטופס,
ולשים מאחורי הכפתור את הקוד הבא: (הוא מופיע במסך דוגמא, אבל זה באמת רק דוגמא)MixDocToWord "", "tbl", Me!tFile, Me!bPrint, ppdf, False
הסבר למשתנים שהפונקציה מקבלת (בדוגמא כאן זה בעצם פקדים בבטופס, אתה יכול במקום זה שזה יהיה ממשתנה, או איך שבא לך)
המשתנה הראשון, שבדוגמא כאן הוא ריק ("") זה המשפט סינון שלך לנתונים. נניח מזהה=123tbl= שם הטבלה או השאילתא שלך (כדי לפשט את הדוגמא קראתי לו ככה, אתה יכול להחליף אותו למה שבא לך)
tFile = שם הקובץ - בדוגמא אני שם את שם הקובץ באופן אוטומטי מהתיקייה, אתה יכול לתת גם נתיב מוחלט לבחירתך (או מהגדרות בטבלה)
bPrint = האם לשלוח למדפסת, בוליאני (כן ולא)
ppdf = האם לסגור לקובץ PDF, בוליאני (כן ולא)
הפרמטר האחרון שעשיתי בדוגמא אותו קבוע ב False זה האם לייצר קובץ חדש,
ואחריו יש עוד משתנה שלא חייבים לשים, וזה האם למיין ואיך.מקווה שזה יעזור
אם לא, @OdedDvir התותח כאן כדי להסביר איך לעשות את זה הכי טוב שיש
-
@בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
נתוני זמן ותאריך ללא הפורמט שהגדרתי להם באקסס
בעיה ידועה וכואבת
יש 2 אפשרויות, או שתפצל את הנתונים בשאילתא, ואז תציג אחד אחרי השני (או בדרך אחרת תמיר את זה לסטרינג ולא מסוג תאריך
אפשרות שניה שבה אני משתמש בד"כ, זה לעשות עיצוב על התאריך ולהגדיר ידנית את הפורמט הנכון. צריך לעשות את זה רק פעם אחת, ואח"כ אתה שומר את זה והוא זוכר את ההגדרה.
(אני רואה עכשיו שבלינק שהבאת @OdedDvir התייחס לפיתרון הראשון אז, ו @מנחם לפיתרון השני....) -
@בערל הנה הקוד הבסיסי (הסתמכתי על המקור הזה)
Public Sub MergeWordDocument(inputFileName As String, outputFileName As String) 'Open the templete document Dim wdDoc As Object Set wdDoc = GetObject(inputFileName, "Word.Document") wdDoc.Application.Visible = False With wdDoc.MailMerge .MainDocumentType = 0 ' wdFormLetters .Destination = 0 ' wdSendToNewDocument .SuppressBlankLines = True .Execute Pause:=False End With ' Save the output document wdDoc.Application.Visible = True wdDoc.Application.ActiveDocument.SaveAs outputFileName ' Cleanup wdDoc.Close SaveChanges:=False Set wdDoc = Nothing End Sub
צור לחצן בטופס, ובאירוע לחיצה שלו תכתוב את הקוד הבא (תחליף כמובן את שמות הקבצים):
MergeWordDocument "D:\temp\myTemplete.docx", "d:\temp\output.docx"
-
תודה רבה על הפירוט
הורדתי ובדקתי את הזיפ, הלחצן של ההדפסה לא מגיב לי ולא הצלחתי לבדוק איך זה עובד.@clickone אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:
בעיה ידועה וכואבת
יש 2 אפשרויות, או שתפצל את הנתונים בשאילתא, ואז תציג אחד אחרי השני (או בדרך אחרת תמיר את זה לסטרינג ולא מסוג תאריך
אפשרות שניה שבה אני משתמש בד"כ, זה לעשות עיצוב על התאריך ולהגדיר ידנית את הפורמט הנכון. צריך לעשות את זה רק פעם אחת, ואח"כ אתה שומר את זה והוא זוכר את ההגדרה.הסתדרתי ע"י הוספת עמודה בשאילתא והמרה לטקסט ע"י הפונקציה Format