[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル日付一月前にメールする』(デゴイ)
初めてお世話になります。
B列に氏名、C列に日付が100行ほど入っています。 日付の一か月前になったらPC使用者に知らせたい (エクセルを毎日開くわけではない)のです。 よい方法が浮かばず、自分あてにメールを送れないか? と思いあれこれ調べたのですが エクセルからマクロでメールを送ることは http://www.fastclassinfo.com/entry/vba_outlook_sendmail を参考にできたのですが 「自動で」というのはむしでしょうか? なにか別に方法があればいいのですが エクセルを開かずに「知らせる」というのは やはり無理でしょうか? メーラーは OUTLOOK2010です よろしくお願いします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
文脈が、ちょっと不明瞭です。
エクセルを毎日開かない人は、PC使用者ですか?
「自分あてにメールを送れないか?」の自分とはデゴイさんですか?
だとすると、全体的に意味が通じないですけど?
(半平太) 2018/05/10(木) 09:48
おっしゃる通り、変な書き方をしてしまいすいません。 PC使用者もエクセル開かないのも 自分宛の自分も私です。 「単純に毎回スタートアップに入れて開けよ」 と叱られそうですが… すいません。
(デゴイ) 2018/05/10(木) 10:27
全部自分だったのですか・・驚きました。
そうすると、こっちの氏名は単なるデータの説明だったんですねぇ・・ ↓ >B列に氏名、C列に日付が100行ほど入っています。
> 「単純に毎回スタートアップに入れて開けよ」
毎回って言うか、一回セットすれば終わりですよね?
ここで聞いた対策(もしあればですけど)を実施するより簡単です(多分)。
私にはメールを介在させるようとする意味が理解できない。 問題の所在がすんごく不明瞭。
(半平太) 2018/05/10(木) 11:03
やっぱりそうですよね。毎朝確認します。 日付(期限日)が来るのが 2〜3ヶ月に1件程度なので ついつい忘れてしまい、期限切れになって 気づき、上司に謝罪する…が繰り返され (私がドジなので仕方ないのでですが) 日付の何日か前に自動で知らせてくれたら 助かるなぁ…と思い、その方法が見当たらず メールなら毎日チェックするので… メールを自分宛に自動で出せたら…という発想でした。 つまり、C列の日付の30日前になったら 「B列の名前の人の有効期限が近づいています」 といった内容のメールを自分宛に自動でだせたらなぁ〜 ということでした。 横着な考えでした。お手数をお掛けしました。 (デゴイ) 2018/05/10(木) 11:24
OUTLOOKのリマインダー機能を使ってはどうか。 (ねむねむ) 2018/05/10(木) 11:28
> 日付(期限日)が来るのが2〜3ヶ月に1件程度なので > : > 横着な考えでした。 > 毎朝確認します。
いや、横着じゃないです。極めて人間的な発想です。
「人間」が毎日確認する必要はありません。 「エクセル」にやらせるんです。
PCの電源を入れる ↓ エクセルが立ち上がる ↓ エクセルは、近々に到来者がいないか自動的にチェックする。 │ ├→居なければ、自動的に閉じる。 │ └→居れば、メッセージを出して、デゴイさんが「OK」ボタンを押すのを待つ。
簡単な仕掛けで実現できます。
(半平太) 2018/05/10(木) 11:36
もしかして、電源を入れるのはデゴイさんとは限らないんですか?
それだと、勝手に「OK」ボタンを押されちゃうとまずいので、 「メールを送る方式」がベターとなります。
(半平太) 2018/05/10(木) 11:49
返信ありがとうございます。 リマインダー機能…?ちょっと調べてみます。 電源を入れるのは私です。 エクセルにやらせる方法、 もしあれば教えていただけるでしょうか。 お手数をお掛けします。
(デゴイ) 2018/05/10(木) 11:54
関連する情報を以下とします。
1.期限管理簿.xlsm 今あるブック名 2.DailyCheck.xlsm 新規作成ブック名 ※ 上記2ブックは同じフォルダに入っているものとします
3.Sheet1 日付データがあるシート名
4.Sheet1 のレイアウト
行 _A_ __B__ ____C____ ___D___ 1 氏名 日付 通知済 2 ド 2018/5/10 ←通知が済むと、エクセルはD列に「1」を書き込む 3 ケ 2018/5/11 (次の日には通知対象外にする為) 4 市 2018/5/12 5 班 2018/6/10 6 pay 2018/6/11 7 他 2018/6/12
5.「DailyCheck.xlsmのショートカット」を作って、スタートアップフィルダーに入れる
以後電源を入れると、上記ショートカットが呼ばれ、 通知対象があれば以下のメッセージが出ます。(なければ、エクセルは自動的に消えます) ↓ ================ 1ヶ月内の期限到来者が存在します
確認しましたら「はい」をクリックしてください。 ※明日も通知が必要な場合は「いいえ」をクリックしてください。
ド 5/10 ケ 5/11 市 5/12 班 6/10 ================ これ重要! ↓ ’「DailyCheck.xlsm」の「ThisWorkbookモジュール」にコピペするマクロ
Option Explicit
Private Const WBN As String = "期限管理簿.xlsm" '←実際のブック名にする Private Const WsN As String = "Sheet1" '←実際のシート名にする
Private Sub Workbook_Open() Dim DueCtrlBK As Workbook Dim rngNM As Range Dim cel As Range Dim tgtDate Dim Msg As String, msg2 As String Dim Cnfm As Range
On Error Resume Next Set DueCtrlBK = Workbooks(WBN) On Error GoTo 0
'開いてなかったら開く If DueCtrlBK Is Nothing Then Set DueCtrlBK = Workbooks.Open(ThisWorkbook.Path & "\" & WBN) End If
With DueCtrlBK.Sheets(WsN) Set rngNM = .Columns("B:B").SpecialCells(xlCellTypeConstants, 23)
For Each cel In rngNM If IsEmpty(cel.Offset(, 2).Value) Then '通知済みはスルー tgtDate = cel.Offset(, 1).Value
If IsDate(tgtDate) Then '日付がある If tgtDate <= DateAdd("m", 1, Date) Then Msg = Msg & Left(cel.Value & Space(15), 10) & Format(tgtDate, "m/d") & vbCrLf If Cnfm Is Nothing Then Set Cnfm = cel.Offset(, 2) Else Set Cnfm = Union(Cnfm, cel.Offset(, 2)) End If End If End If End If Next cel End With
If Msg <> "" Then msg2 = "1ヶ月内の期限到来者が存在します" & vbCrLf & vbCrLf & _ "確認しましたら「はい」をクリックしてください。" & vbCrLf & _ "※明日も通知が必要な場合は「いいえ」をクリックしてください。" & vbCrLf & vbCrLf If vbYes = MsgBox(msg2 & Msg, vbYesNo) Then '通知済みにはフラグ「1」を立てる Cnfm.Value = 1 DueCtrlBK.Close True Else DueCtrlBK.Close False End If Else DueCtrlBK.Close False
End If
Application.Quit 'エクセルを閉じる Me.Close False '自ブックを閉じる
End Sub
※運用開始後に「DailyCheck.xlsm」を開きたいときは、 Shiftキーを押したまま、開いてください。(マクロを止める必要があるので) さもないと、オープンイベントが作動して、エクセルが閉じられてしまい、メンテのしようがなくなります。
(半平太) 2018/05/10(木) 14:58
すごい! 無能なため、マクロを有効にしますか? の表示を消すのに少々時間を要しましたが セキュリティー設定で消せました。 他は全く思った通りに表示されます! 横着な私にはバッチリです! (あとは確認してから忘れないようにしなきゃ…(^^;) 本当にありがとうございます。 明日から、朝PCの電源を入れるのが楽しみです。 (デゴイ) 2018/05/10(木) 17:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.