מיזוג נתונים בוורד בקוד VBA
-
אני רוצה למזג נתונים במסמך לכ300 מסמכים
אני רוצה לעשות עם זה באמצעות קוד VBA
אני מכין מסמך וורד עם כל השדות למיזוג
אני רוצה שהקןד יבצע:
סינון בשדה מסוים מעֵרֶך של 1- 331 אחד בכל פעם.
שייצא את המסמך לקובץ וורד וPDF עם שם 1-331 לפי הסינון
לדוגמא: בפעם הראשונה שיסנן שדה קוד אישי שווה ל1 וייצא למסמך נפרד וישמור אותו בוורד וPDF בשם 1
וכן הלאה עד 331
אשמח לכל עזרה. -
@smk123
בפורום הישן
@clickone הביא את האקסס הזה למיזוג דואר.
מיזוג לוורד.zipבקוד הנ"ל הוא מייצא לאקסל, אם זה משנה לך.
ואולי לא שווה לך להעסיק את האקסס לעשות את כל העבודה
תוכל להשתמש עם קוד מעין זה כדי לסגור לPDF ישיר מוורד מתוך רשימה של 300 שמות.
(צריך לשנות שמור בשם לPDF )Sub אא_חוברת_מיזוג_מאקסל() Dim i As Integer If MsgBox("זכרת לעשות 'הצג תצוגה מקדימה של תוצאות'?", vbYesNo + vbMsgBoxRight + vbMsgBoxRtlReading) = vbNo Then Exit Sub With ActiveDocument.MailMerge.DataSource If MsgBox("ידפיס " & .RecordCount & " רשומות. מאשר?", vbYesNo + vbMsgBoxRight + vbMsgBoxRtlReading) = vbYes Then .ActiveRecord = wdFirstRecord For i = 1 To .RecordCount Application.PrintOut .ActiveRecord = wdNextRecord Next MsgBox "הדפסת בהצלחה " & .RecordCount & " רשומות", vbMsgBoxRight + vbMsgBoxRtlReading End If End With End Sub
-
https://tchumim.com/topic/473
ובעקבותיו, מה ש@clickone שיתף:
https://tchumim.com/topic/475 -
@smk123 אמר במיזוג נתונים בוורד בקוד VBA:
@מלא
זה משנה לי כי א"א ליצא לאקסל לכאורה כי יש בטבלה מעל 100 אלף רשומות.לא חושב שאמור להיות בעיה לייצא שאילתה של 300 מהם.
אשמח לשיפוץ של הקוד כדי שיתאים לי/הכוונה.
שוב תודהתחליף את השורה הזאת
Application.PrintOut
בזה, (תשנה את הנתיב למה שמתאים לך)
ActiveDocument.ExportAsFixedFormat OutputFileName:="D:\שולחן העבודה\" & .RecordCount & ".pdf", ExportFormat:=wdExportFormatPDF
-
@smk123
הסיבה שעשיתי ייצוא לאקסל בעיקר בגלל שבשאילתא אצלי היו נתונים שנלקחו בפונקצייה פנימית באקסס ואת זה הוורד מגירסה 2007 לא קרא בגלל אבטחה (בעצם זה איפשר להריץ קד VBA מהוורד וזו הייתה עיקר הבעייה)זו ריצה ופירוק של הקבצים חד פעמי או קבועה?
אם זה חד פעמי, תסגור את הקובץ לאחד ארוץ ואז תפצל אותו עם תוכנה שיודעת לעשות split לPDF
אם זה קבוע, הקוד ש @מלא תיקן נכוןלגבי הייצוא כתבו כאן נכון. אה צריך להחיל את המיזוג על שאילתא שמכילה בסיון שלה רק את ה300 רשומות
-
-
@clickone אני רוצה לקחת מסמך לבנות עליו את המיזוג
ואז עם קוד להריץ.
סינון שדה מסוים שווה לערך 1
יצירת מסמך ממוזג שמירה לpdf בשם 1
ושוב סינון שדה מסוים ל2
יצירת מסמך ממוזג לשמירה בpdf וורד בשם 2
וכן הלאה עד 331
במקום לעשות את זה בכל פעם ידנית אני רוצה שהקוד יבצע את זה עבורי. -
@smk123
הקוד של @clickone עושה את המיזוג מצויין.
יכול להיות שהוא סוגר את הקובץ, אני כבר לא זוכר, אבל אם כן,
תגדיר אותו שיפתח את הקובץ וורד בלי סגירה רק יכניס לשם את המיזוג.אחרי זה תעשה מאקרו בוורד עם הפונקציה שהבאתי לעיל,
ותפעיל אותו מתוך וורד.
הוא יסגור לך את כל המסמכים לPDF עם מספר עוקב
ותרוויח שבמקום שהאקסס יפתח קובץ וורד, יסגור אותו. יפתח קובץ נוסף וכו'
ויתבזבז זכרון וגם שהאקסס יהיה עסוק..
אז שרק הוורד יהיה בפעולה -
@מלא
אני אסביר יותר את הצורך
אני בונה לוח לימוד ל331 איש כל אדם הלימוד הוא שונה.
ואני בונה לוח מתחילת המחזור עד סופו כל מחזור הוא כ 11 חודש. (331 יום)
יש לי טבלה עם תאריך והלימוד לאותו יום וקוד אישי של הבן אדם.
אני רוצה למזג לכל אחד את הלוח שלו ולכל אחד הסינון שונה לפי הקוד האישי שלו -
@מלא
כרגע זה עומד שיצרתי מסמך תבנית למיזוג עם כל השדות ואני צריך לסנן עכשיו לפי עמודה מזהה לומד מ1עד 331.
לשמור במסמך נפרד ולייצא לpdf עם השם לפי מזהה לומד.
1 2 3 4 וכן הלאה עד331
אני כרגע נמצא בשלב לפני הסינון והיצוא
יש קוד או מאקרו הוורד שיכול לעזור לי בזה?
לא הצלחתי לממש נכון את מה שהבאת
מקור הנתונים הוא אקסל -
@מלא אמר במיזוג נתונים בוורד בקוד VBA:
@smk123 אמר במיזוג נתונים בוורד בקוד VBA:
109561
לא בקובץ האקסס, בקובץ הממוזג.
331 בכל אחד