
OdedDvir
-
סידור מספרי טלפון באקסל -
הדפסת ד''וח מאקסס על בסיס קובץ וורד@בערל כעת עלה לי רעיון הרבה יותר פשוט, שלא מצריך טבלת עזר כלל: פשוט נשנה ישירות את תחביר השאילתה של המיזוג.
- צור שאילתא qryMailMerge. (לא משנה מה התחביר שלה כרגע, אנו נשנה זאת מיד). ובמיזוג דואר תבחר אותה כמקור הנתונים.
- בקוד הלחצן:
DoCmd.RunCommand (acCmdSaveRecord) CurrentDb.Execute "qryUpdate_Data", dbFailOnError Dim SQL as String SQL = "SELECT Data.ID, Data.FirstName, Data.LastName " _ & "FROM Data " _ & "WHERE (Data.ID = " & Me.ID & ");" CurrentDb.QueryDefs("qryMailMerge").SQL = SQL DoCmd.GoToRecord , , acNext RunMailMerge "C:\Users\.....TEMPLATE.docx", "C:\Users......pdf", True
זהו. שורה 8 משנה את השאילתה כך שתציג את הנתונים הרלוונטים.
זה גם עדיף למקרה שבו שינית את הנתונים ולא לחצת על הכפתור, הם יתעדכנו בוורד בכל מקרה.
אמנם כך התחמקתי מלהסביר על שאילתת פרמטר, אבל עוד חזון למועד... -
אופיס 2021 ?@יעקב-ישראל הם הכריזו על גרסת 2021 הלא מקוונת כבר בפברואר השנה. עיין כאן:
https://www.tgspot.co.il/microsoft-anounces-2021-updates-for-windows-10-and-office-2021/
אגב, הם ממשיכים להוסיף שיפורים קטנים גם באקסס. חבל שכל כך מעט -
דילוג על לולאה בVBA -
גוגל שיטס | העברת שורות לגיליון אחר@שוהם307 @yossiz נתן לך מראה מקום לביצוע, הנה עוד אחד עם קוד מפורט:
https://stackoverflow.com/questions/21056347/how-to-add-a-button-per-row-in-google-spreadsheet@שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:
@OdedDvir לא נעים לי להכביד עליך... אבל אולי בכל זאת?!
אני כאן באמת בשביל לעזור, אבל אם אתה רוצה שאעשה את הכל לבד, אפנה אותך לכאן
זה שלא נעים לך, זה סימן שאתה מבין שזו בקשה שדורשת ממני זמן ומאמץ...אם אתה מעוניין להציע לי עבודה, תוכל לפנות אלי בפרטי.
אם בכל זאת אתה מעז לקפוץ למים, לנסות, להכשל, לשאול, לקבל תשובה, ושוב לנסות, וכך להתקדם עד שתבין מה צריך לעשות - תתחיל, ותפרט בדיוק מה עשית, והיכן נתקעת. אשמח לעזור. -
מודול באקסס לשינוי אוטומטי של גודל טופס לפי הרזולוציה הנוכחית@tar הלוואי והיה כזה דבר. זה לא כל כך פשוט. וזו אחת מהנקודות החלשות של אקסס.
הרעיון הוא לקלוט את הרזולוציה הנוכחית על ידי גישה ל-API של Windows.
אח"כ לחשב את הפקטור של השינוי.
אח"כ לעבור על כל הפקדים ולשנות את הגודל שלהם לפי זה.
אם יש לך פקדים שמעוצבים עם פריסה (מוערם או טבלאי) זה אפילו יותר מעצבן...
יש לי משהו שפעם כתבתי, הסתמכתי על שני פרוייקטים אחרים שמצאתי ברשת. לעת עתה אני לא מעוניין להעלות אותו לרשת.
אבל עכ"פ הנה הפרוייקטים שעליהם הסתמכתי:
ResizeFormExample v2.6.zip
https://github.com/pd-oflaherty/Access-Form-Resizerנ.ב. כדאי שתשנה את הכותרת לנושא למשהו יותר ספציפי, למשל: מודול באקסס לשינוי אוטומטי של גודל טופס לפי הרזולוציה הנוכחית.
-
תוכנה לסימון חזרות@פלורידה אפשר על ידי כלי המפתחים:
-
קובץ CMD להדפסה מאקסל/וורד@שוהם307 הנה משהו זריז באקסל: מדבקת משלוח.xlsm
בגליון הגדרות תוכל להכניס את רשימת העובדים ואת שעות ההתחלה והסיום של כל משמרת:
בגליון תוית תכניס רק את הערך של "שולם" ואת שם העובד:
ותלחץ על הלחצן "הדפס".
התוית תודפס למדפסת שכרגע מסומנת כמדפסת הנבחרת באקסל. -
העתקת קבצים מתוך תיקיות רבות לתיקייה אחת בבת אחת -
קיצור דרך ל'הצג ציורים ותיבות טקסט על המסך'@חוות-דעת תוכל ליצור מאקרו עבור כך:
Sub TogglePicturesAndDrawings() With ActiveWindow.View If .ShowPicturePlaceHolders = False Or .ShowDrawings = True Then .ShowPicturePlaceHolders = True .ShowDrawings = False Else .ShowPicturePlaceHolders = False .ShowDrawings = True End If End With End Sub
שיניתי את המקור מכאן.
-
אקסס למתחילים: תגובות@בערל אמר באקסס למתחילים: תגובות:
לא בדיוק הבנתי את הקטע הזה.
למה אפס מסתיר אותו? ולמה אם אני מסתיר אותו הוא משתנה לטקסט?שאלות מצויינות!
במקור השורה בחרנו את qryDonor_Name. זו שאילתא שהפלט שלה מכיל שני שדות.
כברירת מחדל, התיבה המשולבת תציג:
במצב פתוח (=כשלוחצים על החץ משמאל) - את כל השדות שבשאילתא, דהיינו ID, FullName
במצב סגור - רק את השדה הראשון IDאנחנו רצינו להציג רק את FullName, ולכן קבעתי את הרוחב של העמודה הראשונה (ID) להיות 0. רוחב אפס פירושו: מוסתר.
לעמודה השניה אני מאפשר רוחב של עד 4 ס"מ.אגלה לך סוד: במקרה שלנו, יש רק שתי עמודות, וכיוון שהסתרנו את העמודה הראשונה, מעתה אפשר לתת לעמודה השניה כל רוחב שנרצה, אקסס ממילא תשתמש בכל החלל האפשרי בשביל להציג את העמודה הזו (כלומר ברוחב כל העמודה של DonorID בתצוגת גליון נתונים)
אפשר אפילו בכלל לא לציין את רוחב העמודה השניה, ופשוט לכתוב רק 0. אקסס תבין שכוונתנו לעמודה הראשונה, ותסתיר אותה.
פשוט לא רציתי להשאיר דברים לא מפורשים.ובכדי להוסיף על הבלבול שלי, כשקבעתי את שניהם לאפס - הוא חזר להציג את המספר...
נכון מאוד, כי אם אתה מציין בפירוש ששתי העמודות רוחבן אפס, הפירוש הוא שנסתיר את שתיהן, אם כן מה נציג בתיבה? אקסס מתעלמת מכל ההגדרה השגויה וחוזרת לברירת המחדל. ובכגון דא אמרינן שתיקתיך יפה מדיבוריך...
תמשיך לנסות ולהתנסות, הסקרנות הזו תגרום לך להבין באמת!
-
יצירת מתקין לתוכנה - עזרה@משתמש-מקצוען יש לך את InstallForge שהוא חינמי לגמרי. משום מה לא פתוח עדיין בנטפרי. תבקש שיפתחו לך.
אני משתמש ב SSE-Setup שהוא חינמי עבור תוכנות Freeware והרשיון לתוכנות מסחריות לא יקר. הוא מעולה במיוחד לתוכנות מבוססות אקסס.
פתוח כבר על ידי... -
סמלים שגויים בשורת המשימות@ua הייתה לי את הבעייה הזו במשך תקופה והיא נעלמה באותה מסתוריות שבה הופיעה.
הייתי מנסה לבנות מחדש את הקש של הסמלים.
תוכל להשתמש בקובץ BAT (מקור) :@echo off set iconcache=%localappdata%\IconCache.db set iconcache_x=%localappdata%\Microsoft\Windows\Explorer\iconcache* echo. echo The explorer process must be temporarily killed before deleting the IconCache.db file. echo. echo Please SAVE ALL OPEN WORK before continuing. echo. pause echo. If exist "%iconcache%" goto delete echo. echo The %localappdata%\IconCache.db file has already been deleted. echo. If exist "%iconcache_x%" goto delete echo. echo The %localappdata%\Microsoft\Windows\Explorer\IconCache_*.db files have already been deleted. echo. exit /B :delete echo. echo Attempting to delete IconCache.db files... echo. ie4uinit.exe -show taskkill /IM explorer.exe /F If exist del /A /F /Q "%iconcache%" If exist del /A /F /Q "%iconcache_x%" start explorer.exe echo. echo IconCache database files have been successfully deleted. goto restart :restart echo. echo. echo You will need to restart the PC to finish rebuilding your icon cache. echo. CHOICE /C:YN /M "Do you want to restart the PC now?" IF ERRORLEVEL 2 goto no IF ERRORLEVEL 1 goto yes :yes shutdown /r /f /t 00 :no exit /B
והנה הקובץ המוכן:
Rebuild_Icon_Cache.bat -
סמלים שגויים בשורת המשימות@ua זו בעיה שהופיעה עם העדכון החדש של Windows (כך נראה לי)
יש כאן תיקון לבעיה (לבצע רישום מחדש של תפריט ההתחלה ושורת המשימות)בקיצור צריך לפתוח PowerShell ולהריץ את השורה הבאה:
Get-appxpackage -all *shellexperience* -packagetype bundle |% {add-appxpackage -register -disabledevelopmentmode ($_.installlocation + “\appxmetadata\appxbundlemanifest.xml”)}
לבצע איתחול - וזהו.
-
דיסק קשיח חיצוני@הכריש אמר בדיסק קשיח חיצוני:
סתם מעניין, מי שומר חומר במקום אחד בלבד?
כולנו (גם Google). לענ"ד מיותר לזרות לו מלח על הפצעים.
-
חילוץ קבצים ZIP@בער צר לי לאכזב אותך, אך כל שאלותיך האחרונות צליל אחד להן, אתה מבקש לשלוף נתונים מקובץ משוחזר, כאשר נראה שהקובץ לא שוחזר כראוי.
יתכן שקובץ משוחזר יכיל הרבה "זבל" ללא שום קשר לתוכנו המקורי.
רוב הסיכויים שלא תוכל לשלוף כלל נתונים מהקובץ, וגם אם כן, זה ידרוש עבודת נמלים על ידי משחזר מומחה -
יצירת גיליונות רבים באקסלdim SheetNum as integer SheetNum = InputBox("הכנס מספר גליון להדפסה") Worksheets(cstr(SheetNum)).PrintOut
-
יצירת גיליונות רבים באקסל- צור את הגליון הראשון כפי שמופיע בתמונה
- תשנה את הערך של כל התאים חוץ מ-B1 להיות
=B1
זה יחסוך לנו אחר כך לשנות את כל התאים בגליונות, מספיק לשנות רק את תא B1
- פתח מודל ותדביק את הקוד הבא
Public Sub CreateSheets(NumOfSheets As Integer) Worksheets("1").Activate Dim i As Integer For i = 1 To NumOfSheets If Not SheetExist(CStr(i)) Then ActiveSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next ActiveSheet.Name = CStr(i) ActiveSheet.Range("B1").Value = i End If Next i End Sub Function SheetExist(WorkSheetName As String) As Boolean Dim Worksheet As Worksheet SheetExist = False For Each Worksheet In ThisWorkbook.Worksheets If Worksheet.Name = WorkSheetName Then SheetExist = True End If Next End Function
- עכשיו תריץ בחלון Immediate
CreateSheets(500)
ביססתי את הקוד על פי האמור כאן.
-
קוד vba ליצירת גיבוי לקובץ מסד הנתונים של אקסס@אוריי
שלב א: קוד בסיסי להעתקת בסיס הנתונים לקובץ חדש:Private Sub BackupDatabase() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "MyDB.accdb", "BackupDB.accdb", True 'Overwrite old file End Sub
שלב ב: בדיקה אם התאריך השתנה:
עליך לבצע בדיקה האם התאריך השתנה, לשם כך עליך לשמור במשתנה את תאריך הגיבוי האחרון
צור בטופס הראשי משתנה LastBackupDatePrivate LastBackupTime as Date
שלב ג: אתחול המשתנה בפתיחת התוכנה
נשתמש בארוע Form_Load() של הטופס הראשיPrivate Sub Form_Load() ' ... LastBackupTime = #1/1/2000# 'סתם ערך ישן לדוגמא End Sub
כמובן שבתרחיש האמיתי עליך לשמור את הערך היכן שהוא (למשל בטבלה) ולשלוף אותו משם בפתיחת התוכנה.
שלב ד: יצירת ארוע פסיקת שעון בטופס הראשי:
עכשיו צריך לבדוק מדי פעם האם התאריך השתנה מהגיבוי האחרון, ואם כן - לקרוא לפונקציה BackupDatabaseלשם כך תשתמש בארוע Form_Timer() של הטופס הראשי (זה שפתוח תמיד בתוכנה):
Private Sub Form_Timer() dateNow = Date() If (Abs(DateDiff("d", LastBackupTime, dateNow)) > 0) Then BackupDatabase LastBackupTime = dateNow 'שמירת התאריך החדש End If End Sub
שלב ה (ואחרון): קביעת מרווח הזמן שבו ייקרא הארוע Timer
במאפייני הטופס הראשי יש מאפיין בשם "קצב פסיקת שעון". שם מגדירים (באלפיות שניה) את מרווח הזמן שעבורו הטופס קורא לפונקציה Timer(). כרגע הוא 0. תכניס שם ערך חדש כמו 60000 (=60 שניות).
זהו. עכשיו תתבצע בדיקה לשינוי התאריך בכל דקה!
בהצלחה -
עזרה - אתחול דיסק און קי@יושב-אוהלים זו רמאות מאוד שכיחה. משנים את ההגדרות של מערכת הקבצים של ה-USB כך שתציג כאילו יש שם נפח גדול בהרבה.
תקנה רק ממוכרים עם אחוז אמינות גבוה ומספר רכישות גבוה.
עיין כאן לעוד כמה חוצפות...