מחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס
-
יש לי רשימת אקסס ואני רוצה להדפיס רק את מה שבשדה X רשום את המספרים שיש בטבלת אקסל בתוך הטבלה ושכל דו''ח יהיה לו מס' יחודי
לדוגמא יש לי אפשרות כזו
ויש לי לחצן הדפסה כזה שמדפיס את הרשומות המוצגות
עכשיו יש לי רשימת אקסל שיש לי שם את כל המספרים שאני רוצה להדפיס כזו
(לא מחייב דווקא רשימת אקסל אני יכול ליצר גם טבלה באקסס אם יהיה יותר קל)
עכשיו אני רוצה קוד שבעת שאני ילחץ עליו הוא ידפיס לי את כל הדוחות (רק אלו שמצוינים ברשימה)חשבתי על רעיון של קוד כזה
- שירשום לי בשדה הנ''ל את המס' הראשון
- ידפיס בצורה של הדפסה מהירה
- ימחק את השדה הנ''ל ירשום את השני בצורה של לולאה (הבעיה שאני לא יודע איך לעשות לולאה בקוד)
- ידפיס וכו'
השאלה היא האם זה הדרך הנכונה וא''כ איך עושים את זה?
-
@אוריי זו אכן הדרך הנכונה.
אם אין ענין דווקא בקובץ אקסל - יהיה יותר נוח על טבלה באקסס, למרות שאקסס מסוגלת לייבא בקלות קובץ אקסל עם מבנה טבלה תקין. (הבעיות מתחילות כשהקובץ לא נראה כמו טבלה)
בוא ונפרק את המשימה לשלבים:- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
תוכל להעזר בשאילתא שכבר רשמת ששולפת את המספר מהטופס. - צור פונקציה B שרצה בלולאה על הטבלה וקוראת לפונקציה A עם הפרמטר.
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
-
@OdedDvir אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
תוכל להעזר בשאילתא שכבר רשמת ששולפת את המספר מהטופס.
יש לי קוד שמציג את הדו''ח בתצוגה לפני הדפסה כזה
DoCmd.OpenReport "yy", acViewPreview
@OdedDvir אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
- צור פונקציה B שרצה בלולאה על הטבלה וקוראת לפונקציה A עם הפרמטר.
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
(הבעיה שאני לא יודע איך לעשות לולאה בקוד)
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
-
@אוריי אתה צריך ליצור פונקציה שמשנה את השאילתא שעליו מבוסס הדוח. אני מניח שכרגע השאילתא הנ"ל שולפת את המספר ישירות מהטופס, אתה צריך ליצור משפט SQL שבונה את השאילתא בהתאם לפרמטר שאתה תעביר לו בשעת הקריאה.
עבור לשאילתא שעליה מבוסס הטופס, ותציג אותה בתצוגת SQL, ותדביק כאן את הנוסח שקיבלת. -
@OdedDvir
אני לא יודע איך עושים את זה
אבל אני חשבתי על פתרון אחר יותר קל לעניות דעתי בצורה כזו- פקודה שתרשום את המס' מדף בטופס.
- פקודה שתדפיס את הדו''ח בצורה מהירה ללא תצוגה
- פקודה שתמחוק את הטקסט בטופס.
ועל כל זה לתת לולאה שתרוץ ותחליף את המס' בצורה סדירה עד הסוף.
לא כזה מפריע לי שיהיה על הטופס (אף על פי שזה עקום) כי אני משתמש בזה באופן חד פעמי..
עריכה:
פונקציה של לולאה עשיתי (מקווה שעשיתי טוב)
Public Function lol() As String Dim i, num For i = 1 To 133 num = num + i Next
מה שחסר לי זה הנוסחה שתעשה כמין vlookup על הטבלה..
-
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
אבל אני חשבתי על פתרון אחר יותר קל לעניות דעתי בצורה כזו
מצוין.
אתה צריך לעשות לולאה על טבלה. אני אדגים כאן באופן כללי:
נניח שיש לי טבלה MyTable ואני רוצה לעבור על כל השורות ולהדפיס את השדה MyNumber:Dim rs as DAO.Recordset Set rs = CurrentDb.OpenRecordset("MyTable", dbReadOnly, dbSnapshot) rs.MoveFirst While Not rs.EOF Debug.Print rs!MyNumber 'הדפס את הערך בשדה rs.MoveNext Wend rs.Close