FC2ブログ

 

test

 

 
 

【ずぼらな人向け家計簿 】家計簿が続かない課題 自動Excelマクロのプログラムコード

2013年02月11日

「続けられる家計簿」について

前回、システムの概略の処理を説明しました。

一つ一つの処理について説明をしていきます。まずは①番から!

---------------------------
①の「レシートデータ(8~10桁の文字列)を携帯メールで送信」についてですが
以前説明したとおり下記のようなレシートデータ
を携帯メールで送信します。

ずぼら家計簿



---------------------------
②の「定期起動のタスクスケジューラにより家計簿Excelファイルを起動する」ですが、
タスクスケジューラは、Windowsの標準機能です。Windows7でもXPでもある機能です。
時刻指定で、特定のプログラムを起動することができます。
今回は、○○.batというバッチファイルを起動するようにしました。

さて、その○○.bat の中身は下のような内容です。
これは、cドライブのtestフォルダの家計簿フォルダ内にある家計簿V1.xlsという
ファイルを開くというコマンドです。
end はその○○.batファイルを終了させるコマンドです。

start C:\test\家計簿\家計簿V1.xls
end



---------------------------
③で「Excel内のマクロを自動実行させる」とありますが
エクセルファイルを開いたら、自動で特定のマクロを
自動実行させることが可能です。

それはマクロのサブルーチン名を auto_open にするだけです。下のように。
この名称にするだけで、auto_open内のコードが自動で走り始めます。

Sub auto_open()



---------------------------
④の「Outlook2013をマクロから起動する」ですが下記のような
プログラムになります。

 Dim oApp As Object
  Set oApp = CreateObject("Outlook.Application")



---------------------------
⑤の「ClickYesPro2010をマクロから起動する」ですが下記のような
Shellコマンドを使用します。

'アプリ起動
Shell "C:\Program Files (x86)\ClickYes Pro\ClickYesPro.exe", vbMaximizedFocus



---------------------------
⑥の「Outlookの受信ボックスデータを取得する」ですが、下のようなプログラムに
なります。メールの差出人や差出人アドレスなどで、レシートデータメールかどうかなど
判断ができます。その判断は人ぞれぞれになると思いますので、あえて下記コードには
判断ロジックは入っていません。

Set myNameSpace = oApp.GetNamespace("MAPI")

Set myFolder = myNameSpace.GetDefaultFolder(6)
myFolder.Display
  For n = 1 To myFolder.Items.Count 'フォルダーのアイテム数分ループ
      Set objMAILITEM = myFolder.Items(n)
    SendName = objMAILITEM.SenderName '差出人
    SendAddress = objMAILITEM.SenderEmailAddress '差出人のアドレス
    SendContents = objMAILITEM.Body '本文 "
    Next n



---------------------------
⑦の「レシートデータの含まれるメールを検索する」も人ぞれぞれのロジックですが
メール本文の頭の4桁が整数かどうかで私は判断しております。下記はサンプル例です。
⑧の「検索されたメール内のレシートデータ(8~10桁の文字列)を抽出する」という処理
も下記に含まれています。

'本文が家計簿データかどうか判断する
LetterItemcnt = 1
If IsNumeric(Left(Trim(SendContents), 4)) = True Then '頭の4桁が整数であること。
For chkcnt = 1 To Len(SendContents) + 1
one_Letter = Mid(SendContents, chkcnt, 1)
If IsNumeric(one_Letter) = True Then
  AllLetter(LetterItemcnt) = AllLetter(LetterItemcnt) + one_Letter
  Else: If AllLetter(LetterItemcnt) <> "" Then LetterItemcnt = LetterItemcnt + 1
  End If
Next chkcnt
End If



---------------------------
⑨の「家計簿Excelファイル内の家計簿リストにレシートデータ(8~10桁の文字列)を書き込む」
ですが、下記がサンプル例です。7桁以上の文字列を切り出して、それをレシートデータと判断
しています。抽出したデータをExcelの”入力データ”というシートの特定セルに書き込んでいます。

'家計簿セルに数値をセット
If AllLetter(1) <> "" Then
pos = CInt(Workbooks("家計簿V1.xls").Worksheets("入力シート").Cells(1, 7))
For setcnt = 1 To LetterItemcnt - 1
If Len(AllLetter(setcnt)) >= 7 Then
Workbooks("家計簿V1.xls").Worksheets("入力シート").Cells(pos + setcnt, 1) = AllLetter(setcnt)
Workbooks("家計簿V1.xls").Worksheets("入力シート").Cells(pos + setcnt, 12) = SendAddress
Workbooks("家計簿V1.xls").Worksheets("入力シート").Cells(pos + setcnt, 13) = Format(SendDay, "yyyy/mm/dd hh:nn:ss")
Workbooks("家計簿V1.xls").Worksheets("入力シート").Cells(pos + setcnt, 11) = Format(Now, "yyyy/mm/dd hh:nn:ss")
End If
AllLetter(setcnt) = ""
Next setcnt
End If



---------------------------
⑩の「⑦~⑨について受信ボックス全てのメールに対して繰り返し処理する」は
文字通り繰り返すのみです。



---------------------------
⑪の「マクロからピボットテーブル再計算処理を実行する」は、下記のような
プログラムになります。これは「マクロの記録」の機能を使ってコード化したものです。
Sheets("集計表").Select
Range("B5").Select
ActiveSheet.PivotTables("ピボットテーブル1").PivotCache.Refresh



---------------------------
⑫の「集計結果からメール発信用データを生成する」では、下記のような
プログラムになります。
⑬の「生成したデータを私と嫁のメールアドレスに送信する」の処理も
含んでいます。
Dim oApp
Dim myNameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application")
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6)
myFolder.Display
oApp.ActiveWindow.WindowState = 2

'ここからメールの作成
Dim mITEM 'As Outlook.MailItem 'メールアイテム
Dim i As Integer
Dim SntData As String

'CreateItemでメールアイテムの作成
Set mITEM = oApp.CreateItem(0) 'olMailItem=0 0メールアイテムを指定
mITEM.Display '編集画面表示
'データのセット
mITEM.Subject = "【家計簿 (" & Format(Now, "mm") & "月" & Format(Now, "dd") & "日) 】"
mITEM.To = "test@docomo.ne.jp" '宛先
mITEM.CC = "test5@ken3.org ; test6@ken3.org" 'CC セミコロンで複数アドレスは区切る
'本文生成
SntData = ""
SntData = ここには送信したい情報を文字列として入れれば良い。
mITEM.Body = SntData
'動作
mITEM.Save '.Saveで保存下書きへ※テストなのでコメントにしました
mITEM.Send '.Sendで送信※コメントを外すと送信されます
【ホームIT】 【ずぼらな人向け家計簿】家計簿が続かない課題自動Excelマクロのプログラムコード



---------------------------
⑭の「家計簿Excelファイルの上書き保存する」のプログラムは下のように
なります。

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:\test\家計簿\家計簿V1.xls" 'エクセル保存
Application.DisplayAlerts = True



---------------------------
⑮の「Outlookを終了させる」は下記です。

oApp.Quit  'oullook終了



---------------------------
⑯の「VBスクリプトでClickYesPro2010のexeを強制的に落とす」は
「KillNoNeedTask.vbs」というVBスクリプトをShellコマンドで
起動させます。

Shell "WScript.exe C:\test\家計簿\KillNoNeedTask.vbs", 1 'Yesクリックソフトを終了させる

VBスクリプトの中身は下記のような内容です。
 for each Process in _
  GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
  ("select * from Win32_Process where Name='ClickYesPro.exe'")
  Process.terminate
 Next



---------------------------
⑰の「家計簿Excelファイルを終了させる」は下です。

 Application.Quit 'エクセル終了


これで一連の処理が終りです。上記プログラムをベースに、個人個人のロジックを
入れていけば、オリジナルの「続けられる家計簿」が完成します♪

以上

面倒でない家計簿 = 続けられる家計簿 は 最高に簡単な家計簿システムです!

皆さんも是非自分オリジナルの自作マクロを作成し、レシートデータをメール送信
するだけで家計簿管理が自動できるようになります。

今では、私も嫁も、この家計簿システムには楽させていただいております。

★次回へ続く★



【楽天】

楽天通販おすすめです!

※商品:VBA IE (100%)




【amazon】

アマゾン配達はやい!

   
※商品:VBA IE (100%)





次回記事へ


【関連記事】

  「自作無料gmail家計簿」を使用し始めてから節約できていますよ~♪

以前から紹介し続けている!!『無料Gmail家計簿』<無料Gmail家計簿のメイン画面>毎朝615にパソコンのタスクスケジューラがマクロを起・・・  <続きを読む>

    無料gmail家計簿



  SurfaceProでタスクスケジューラを使う!電源プラン「バランス設定」の問題♪

『Surfaceproでタスクスケジューラを使いたい!!毎日定刻に起動させたいプログラムがあるから』この願いを叶えようと思ったことが、苦労の・・・  <続きを読む>

    SurfacePro3の電源プラン変更 レジストリ変更後



  目を閉じて操作可能な音楽プレーヤー「ウォークマンNW-W270Sシリーズ」!毎朝の通勤通学利用に最適♪

かつて一世風靡したソニーの『ウォークマン』!!私が小学生の時に登場しました。勿論カセットの時代。『ウォークマン』という言葉も完全に生活の中に・・・  <続きを読む>

    水洗いできる音楽プレーヤー ウォークマン



  自宅内の音楽・ビデオデータ共有♪iphone・ipad・ipodtouchでiTunesホームシェアリング♪

我が家の音楽とビデオデータは、リビングに設置されているノートパソコンの中でApple社提供のiTunesソフトで管理されています。音楽やビデ・・・  <続きを読む>

    ホームシェアリングを入りにする



  大画面「iPadPro」で実家のおじいちゃん・おばあちゃんとTV電話(FaceTime)♪遠距離帰省や単身赴任の味方!

東京に住む息子、地方に住むおじいちゃん、おばあちゃん。年に1回実家に帰れたらまだよいほう。。。頻繁に帰ると、時間も交通費もかかる。でも、おじ・・・  <続きを読む>

    「iPad Pro」で実家のおじいちゃん・おばあちゃんとTV電話♪ 遠距離帰省や単身赴任の味方!



  【写真データ管理術】外付けSDカードリーダ設置

子供が2人いますので、日常的に我が子の写真をよく撮影します。カメラはパナソニックのLUMIX。デジカメで動画の撮影ができるので重宝しています・・・  <続きを読む>

    【ホームIT】 【写真データ管理術】外付けSDカードリーダ設置



  後付リビングパソコン向け「ジョイスティック型ポインタ付きキーボード」!

皆さんは、パソコンをリビングPCとして使っていたりしますか?我が家のリビングPCは単にノートPCの映像をリビングにある32型の液晶テレビに出・・・  <続きを読む>

    【ホームIT】 後付リビングパソコン向け「ジョイスティック型ポインタ付きキーボード」!



  価格が一番安いiPhone5S用の液晶保護フィルム「タッチガードナーT475IP5S」の実力!

iPhone5S用の液晶保護フィルムをYAMADA電機に買いに行った♪とにかく、一番安いやつを狙っていたので、購入したのは価格400円の『R・・・  <続きを読む>

    iPhone液晶保護フィルムを綺麗に貼る



  iphoneキーボードに十字キーがない!アンドロイド(Gallaxy)からiOS(iphone)へ移行した時の困りごと。。

アンドロイド(android)OSを搭載したスマホのソフトキーボードには『十字キー』がある!!<アンドロイドOSスマホのキーボード>スマホで・・・  <続きを読む>

    iOS キーボード 十字キー無しでも大丈夫



  iPadproのスタンド(置き台)には「NEST」がおすすめ♪

iPadproは普通のiPadと比較してもかなり大画面であります。12.9インチ。持って操作する代物ではないため、タブレットを立て掛けるスタ・・・  <続きを読む>

    Bluelounge iPad タブレットスタンド Nest ネスト



   ※キーワード:ホームIT
関連記事

 

このエントリーをはてなブックマークに追加 LINEで送る

 

test

 

 

↓励みになりますので、宜しくお願い致します。

にほんブログ村 アウトドアブログ ファミリーキャンプへ
にほんブログ村

 

にほんブログ村 アウトドアブログへ
にほんブログ村

 


オートキャンプ ブログランキングへ

 


手作り・DIY ブログランキングへ


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://madeinkodawari.blog118.fc2.com/tb.php/80-a8740339
    この記事へのトラックバック


    【 こだわり の 最新記事 】