שאלה | הקפצת נתונים באקסל
-
@benzi6789494 יש אופציה שיישלח מייל אבל זה כולל כתיבה:
העתקתי מאתר אחר[ תפוז]
בעזרת שורת פקודה במקרו אירוע . . .
ברמת ה'מודול' ThisWorkbook.
אם נצא מנק' הנחה ששם הגיליון הוא: Expenses ומדובר בסיכום כל הסכומים שבעמודה "C" - כך יראה הקוד:
Private Sub Workbook_Open()
MsgBox Application.Sum(Sheets("Expenses").Columns(3))
End Subאח"כ:
אם תתפשר על שליחת מייל - המציג את ערכו של תא F2 [הסיכום הרלוונטי] - לחשבון ה- Gmail, של הבוס, כשהערך מתא זה יוצג בשורת הנושא, של המייל, - אתה מוזמן להיעזר בקוד המקרו, שלהלן, שאומץ מאחד הקודים של: Ron de Bruin.
שלב אותו במקרו האירוע שהצגתי לך קודם ואם המידע לא מעניין את מפעיל המחשב - בטל את הפקודה MsgBox, המצריכה לחיצה על OK.
Sub Mail_Range()
Set Source = Nothing
On Error Resume Next
Set Source = Range("F2").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, " & _
"please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Range of " & wb.Name & " " _
& Format(Now, "dd-mmm-yy h-mm-ss")
FileExtStr = ".xlsx": FileFormatNum = 51
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
For I = 1 To 3
.SendMail "abc@tapuz.co.il", _
Range("F2")
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close SaveChanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub -
@benzi6789494 אני לא יודע. לא כ"כ מבין בזה. רק עשיתי גוגל עבורך...
המקור הוא מכאן:https://www.tapuz.co.il/threads/האם-אקסל-יכול-לייצר-התראות-על-בסיס-נוסחא.13601752/#post-128026119
-
@benzi6789494
זה העתק:האם אקסל יכול לייצר התראות על בסיס נוסחא?
אני רוצה שאקסל יוציא לי התראה (כהודעה קופצת, אסמס, מייל, לא חשוב- העיקר שיקפוץ משהו) על בסיס נוסחת סיכום יומית (לדוגמא- מעקב אחרי צ'קים- שתצא הודעה בפתיחת המחשב כמה הסכום שאמור לצאת בתאריך הנוכחי.
האם זה בר ביצוע?
אקסל 2010
וינדוס 7.תודה רבה למתאמצים.
מיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#2
בעזרת שורת פקודה במקרו אירוע . . .ברמת ה'מודול' ThisWorkbook.
אם נצא מנק' הנחה ששם הגיליון הוא: Expenses ומדובר בסיכום כל הסכומים שבעמודה "C" - כך יראה הקוד:
Private Sub Workbook_Open()
MsgBox Application.Sum(Sheets("Expenses").Columns(3))
End Subהמשך הדיון - ככל שזה נוגע לי - רק אחרי שתקרא את ההכרזה שבראש דף הפורום ותפעל כמתבקש.
yuvalnm
New member
23/4/13
#3
מתנצל. הנה הקובץתודה אבידן.
אבל אני מחפש פתרון לא בזמן שהקובץ נפתח אלא כשהמחשב מופעל. כשווינדוס עולה.שוב תודה
מיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#4
קצת הגזמת . . .תוכל לשקול על הצבת חוברת העבודה בתיקייה STARTUP של מע' ההפעלה ע"מ שהיא תיפתח בעת הפעלת המחשב ואז תוקפץ, גם, חלונית ה- MsgBox ובה הסכום.
שים לב הקוד שונה, במקצת, כדי להתאימו לדרישה.
אם, מאד, תרצה אפשר להוסיף עוד פקודה שתסגור את הקובץ לאחר לחיצה על OK.
Private Sub Workbook_Open()
MsgBox Application.SumIf(Sheets("גיליון1").[A:A], Date, Sheets("גיליון1").[C:C])
End Sub
yuvalnm
New member
23/4/13
#5
תודה רבההרעיון יפה. אבדוק אותו.
אני מניח שלבקש שזה יועבר כאסמס זה מדע בדיוני?תודה רבה!
מיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#6
אתה גם מפעיל את המחשב . . .באמצעות SMS
yuvalnm
New member
23/4/13
#7
עוד יבוא היום...כשאני מפעיל את המחשב, כדי לא לפספס את העדכון היומי של הצ'קים, הייתי שמח שתצא הודעה אוטומטית לנייד של הבוס.
חשבתי אולי על הכיוון של היומן של ג'ימייל. הוא שולח תזכורות אסמס בחינם. אבל אני לא יודע לחבר בינו לבין האקסל.
מיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#8
אז ככה . . .אם תתפשר על שליחת מייל - המציג את ערכו של תא F2 [הסיכום הרלוונטי] - לחשבון ה- Gmail, של הבוס, כשהערך מתא זה יוצג בשורת הנושא, של המייל, - אתה מוזמן להיעזר בקוד המקרו, שלהלן, שאומץ מאחד הקודים של: Ron de Bruin.
שלב אותו במקרו האירוע שהצגתי לך קודם ואם המידע לא מעניין את מפעיל המחשב - בטל את הפקודה MsgBox, המצריכה לחיצה על OK.
Sub Mail_Range()
Set Source = Nothing
On Error Resume Next
Set Source = Range("F2").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, " & _
"please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Range of " & wb.Name & " " _
& Format(Now, "dd-mmm-yy h-mm-ss")
FileExtStr = ".xlsx": FileFormatNum = 51
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
For I = 1 To 3
.SendMail "abc@tapuz.co.il", _
Range("F2")
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close SaveChanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
yuvalnm
New member
23/4/13
#9
הוא תותח! הוא תותח!מיכאל אתה אלוף.
היה צריך לשפץ משהו קטן ככה שהסכום יופיע בנושא ההודעה, להלן מודגש.
מכאן אמשיך לבד לאסמס. נראה אם אצליח.Sub Mail_Range()
Set Source = Nothing
On Error Resume Next
Set Source = Range("F2").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, " & _
"please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Range of " & wb.Name & " " _
& Format(Now, "dd-mmm-yy h-mm-ss")
FileExtStr = ".xlsx": FileFormatNum = 51
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
For I = 1 To 3
.SendMail "abc@tapuz.co.il", _
Range("A1")
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close SaveChanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
מיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#10
השארתי גם לך "ללעוס" קצת . . .כמו, למשל, הכנסת המייל המתאים במקום הסתמי שהצגתי.
ההבדל בין F2 ל- A1 טמון המקום ממנו מורץ המקרו.
העיקר שהבוס יהיה מבסוט וכולי תקווה שהוא כבר מדבר עם סוכנות הנסיעות ושולח אותך - כבונוס - לסוף שבוע באחת מערי הבירה האירופאיות.
yuvalnm
New member
23/4/13
#11
LIKE ענקמיכאל אבידן
מיכאל אבידן
Member
מנהל
23/4/13
#12
אם אתה מחפש סיבות ל"לייקים" . . .בדוק - כ'גימיק' - את הקוד, שלהלן, ב-ThisWorkBook:
Private Sub Workbook_Open()
On Error Resume Next
SendMail "abc@tapuz.co.il", Sheets("גיליון1").Range("F2")
End Sub
yuvalnm
New member
24/4/13
#13
נשארתי ללא מיליםתותח, כבר אמרתי?
מדהים!תודה רבה
-
@aiib
באמת דבר יפהאבל הקוד הזה נועד להכניס מאקרו שמתי שפותחים את גליון האקסל הוא יציג סיכום של טור 3 בגליון בתיבה אוטומטית [ולוחצים "אישור" להמשיך הלאה]
והחלק השני מיועד לשלוח למייל את הסכום הזה
כאן זקוקים גם למאקרו שיודע למצוא את מי להקפיץ ואת מי לא
ובנוסף להקפיץ כמה שורות [ניתן בנפרד וניתן ביחד שזה יותר קל] מ"מ זה התקדמות טובה, אבל צריך עוד הרבה -
@שמ18 ממחשבה של רגע נראה שאולי אפשר לעשות תיבה שבה יופיעו כל החריגות של מעל/מתחת/מעבר לתאריך/קרוב לתאריך וכדו' והמאקרו ישלח במייל את התיבה הזו.
כלומר סינון המידע של מה שאנחנו רוצים שיסתנן יתבצע בטופס עצמו והוא ייכנס לתיבה נפרדת שאותו המאקרו ישלחהסברתי את עצמי מספיק?!