2012年10月22日月曜日

Site Map

[レッスン]
NTTフレッツ光

(OutlookVBA)
step0 最初にすること 参照設定

step1 オブジェクトの生成 Outlookをエクセルからいじるスタートポイント

step1.5 受信トレイ以外のフォルダを指定

step2 Outlook受信トレイのメールの件数を数える

step3 Outlook アドレス、件名、受信時間を調べる

step3.5 これだけは押さえておきたい文字列操作の3パターン

step4 添付ファイルを一括で自動保存

step4.5 添付ファイルを連番で保存

step5 メール受信時間から日付情報のみを取り出す

(その他)
フォルダを作成

ファイルの存在を調べる

ドラッグ&ドロップでファイル名取得


[エッセイ] 
仕事をしたつもり

若手社員こそプログラミングを覚えるべき理由

社内SEが本音で語るサラリーマンに必要なたった一つのプログラミング言語


[おすすめ本]
My Book Store(工事中)

PVランキング 人気ブログランキングへ

[VBScript] 意外にUXをあげてくれる小技、ドラッグ&ドロップでファイル名取得

今回はOutlookのVBAとは全く関係のないTipsをご紹介します。




ドラッグ&ドロップをすることで、特定の処理をさせる方法です。

NTTフレッツ光





新しく覚えることはちょびっとVBScriptを覚えるだけです。

VBScriptの文法は基本的にはVBAと同じなので、それほど違和感なく使えると思います。


細かくは色々ありますが、一番違うのはデータ型を宣言しないことですね。

まぁ詳細は、類書で見てもらうとして、早速。


例として、ドラッグ&ドロップしたファイル名を取得するVBScriptを書いてみます。


以下のコードをメモ帳に貼りつけて、拡張子を"vbs"で保存して下さい。





適当なファイルをファイルを作成したvbsファイルにドラッグ&ドロップしてみて下さい。

ファイル名がポップアップで出てきました?


うまく出てくれば成功です。




前の職場では、




の部分を書き換えて、


ドラッグ&ドロップした場合に予め指定したフォルダに、特定のファイル名+日付で保存する


という処理を入れていました。

大量のファイルを処理したり、定期的にファイル名を変更する場合はこれじゃない方が楽ですが、

一日一個だけ処理すればよいので、上記の方法を使っていました。



多分、今でも職場では使われているかと思います。



使い方次第で幅が広がるので是非使ってみて下さい。





PVランキング 人気ブログランキングへ

2011年12月1日木曜日

step5 メール受信時間から日付情報のみを取り出す

「Outlook VBAでさくさく効率化」で取り上げたかった重要なポイントも大分カバーできました。
今回は、以前に紹介したメールの受信時間を調べる方法の応用です。
今回のエントリーでは、日付情報のみを取得します。

これができるようになれば、日付ごとに添付ファイルを整理することが可能になります。

NTTフレッツ光

ReceivedTimeは秒単位で受信時間を管理している

ReceivedTimeを使って受信時間を調べると、左の画像のようにやたらと細かい単位で習得できることがわかります。

これはこれでいいんですが、大抵の場合日付以下の部分は不要な情報です。

ここから日付情報だけ抜きだしてやりましょう。


*"受信時間:"は自分で明記しているので、
Debug.print XXX.ReceivedTime
としている場合は、もちろん受信時間:は表示されません。

データ型を調べてみる
step3.5で文字列操作について紹介しました。(→復習しますか?
left, right, mid関数を駆使することで、今回の目標ももちろん達成可能です。
でも、勉強がてら、もう少しいじってみましょう。

そこで、このReceiveTimeで返ってくるデータ型を調べます。
こういうときに便利なのが、TypeName関数です。ヘルプで見てみると、

構文
TypeName(varname)
引数 varname は必ず指定します。引数 varname には、ユーザー定義型の変数を除く、任意のバリアント型 (Variant) の変数を指定します。

ということで、早速調べてみましょう。次のコードを書いてみて下さい。
Debug.Print TypeName(myfolder.Items(i).ReceivedTime) 
イミディエイト・ウィンドウにはどう表示されるでしょうか?
Dateと返ってくるはずです。
ということで、ReceiveTimeで返ってくるデータは文字列ではなく、日付型のデータということが分かりました。

日付型データのいろいろ

日付データの加工というのは、地味な作業ですが思いのほか色々な場面で使用します。
代表的な例だけいくつか取り上げてみましょう。

1.年、月、日のデータだけを取り出す。

・Year(varname) → 年 yyyy
・Month(varname)→ 月 m
・Day(varname)→ 日 d

という感じです。

ですので、スマートではありませんが、
でスラッシュぬきで、yyyymd形式のデータが取れます。

2.Format関数を使う
最強なのがFormat関数です。
構文
Format(日付データ, 表示形式)
yymmdd形式が欲しければ、
Format(日付データ, "yymmdd")
と指定してあげます。
もちろん年データはいらないという場合であれば
Format(日付データ, "mmdd")とすればいけます。

これで、ReceivedTimeはかなりしゃぶりつくしたことになります!!



<関連エントリー>
step3.5 これだけは押さえておきたい文字列操作の3パターン
step3 Outlook アドレス、件名、受信時間を調べる

<参考サイト>
Tatsuya's Home Page










PVランキング 人気ブログランキングへ

2011年11月24日木曜日

[エッセイ] 残業地獄から脱却したくない若手社員には不要です―プログラミングを覚えるべき理由

今回は自分についての話です。

どんな流れで、ぼくがプチSE化したかをまとめてみました。

NTTフレッツ光


きっと似た境遇の人はたくさんいるはず!

雑務は若手の仕事だけど…
ぼくはまだまだ若手に分類される立場にいます。
きっとどんな会社で勤めていてもそうだと思いますが、
若手の業務は「雑務」に分類されるものが多いと思います。

例をあげるとキリないですが、
簡単だけど、手数がやたらとかかる作業、単純なルーティン作業などなど。
こうした業務は若手がいない部署だと、派遣さんが担当されていたりします。

はっきり簡潔に言ってしまえば、ほとんど付加価値のないbut手間だけがかかる仕事ばかりです。

まるでサラリーマンとしての洗礼を受けるかのように、山のようなどうでもいい業務に追われている人も
多いんじゃないでしょうか?
間違えずにもくもくと右と左の数値が一致しているか確認する(なぜか紙ベースで確認)とか
こっちのシートの数値をオートフィルタでソートして、あっちのシートにペーストして合計値計算とか
をぼくはやっていました。

どんな小さな仕事にも価値があって、それをダレることなくしっかりこなす精神を身につける
というのも、それはそれで大事なことです。
しょうもない作業をミスるせいで、足元をすくわれた経験を一度や二度は誰もがやってしまうでしょう。

だからって付加価値のない、少ない仕事ばっかりやっていたら
いつまでたっても大した人材にはなれません。
やだなぁ、なんでこんな作業で残業やってるんだろ?
と思いながら10時くらいまで残ってひたすらエクセルシートを加工していた時期が続きました。

こういう時期が続くと転職したくなるし、何か資格の勉強とかして違う環境に行きたいな
って考えてしまう。
せっかく入社したのに。


若手の雑務は先輩の思考停止の賜物
もったいないけど、今が嫌だから仕方ない。
でも、忙しいし転職活動用のサイトを覗いてみたけど、結構大変。
てか、スキルが特にあるわけじゃないから、新卒とバリューが全然変わらない第二新卒として活動するのはきつい。

そんで気付いたんです。自分の嫌な仕事を減らすには
・後輩に投げる (自分でやらない)
・納期を遅らせる(一日分の処理量を減らす)
しかない。

残念ですが後輩はすぐには入社してくれないし、納期を遅らせることもムリ。
仕方ないので、少しでも早く終わらせるように手を早く動かすしかありませんでした。

もう少し考えてみると、代々同じような思考の結果、当時のぼくがいるわけです。
みんなめんどくせーって思っていても、どうせ下が入ったら押し付ければばいいや♪
と考えているから、くだらない仕事が代々受け継がれていくわけです。

自分がやって嫌だと思うのを後輩になげつけるのはやっぱり嫌です。
若手はゴミ箱じゃないんです。

ということで、ショートカットキーを覚えまくりました。(ショーカット一覧
ということで、エクセル関数を覚えまくりました。
ということで、マクロ・VBA・VBScriptを覚えまくりました。

こうして今のぼくがいます。


こつこつとした効率化がチリツモで効いてきます。
今日も一本業務アプリをリリースしました。
くだらない毎日の手入力作業がボタン一発で終了です。
もう1個アプリを開発してますが、これが完成すれば部員全員の作業が短縮されます。

一人当たり1日5分の業務短縮でも、20人いれば年間で400時間の短縮です。
50営業日分の時間が新たに生まれます。
小さなことから自動化をすすめましょ!



PVランキング 人気ブログランキングへ

2011年11月23日水曜日

[VBA] フォルダを作成 FileSystemObject

業務アプリを作っているとどうしても、エクセル関数やVBAだけでは足りない部分があります。
ファイルを移動させたり、フォルダを作成したりということはそのままではできません。
当たり前ですが、エクセルマクロの録画モードではフォルダ作成とかはできないわけです。

エクセルVBAからファイルやフォルダをいじるのに一番楽なのは、FileSystemObjectを使うことです。


マイクロソフトによる解説ページはこちら。
日本語で解説されているので楽ちんです。






NTTフレッツ光







FileSystemObjectを使う
決まり事として書かないといけないことがいくつかあります。

Dim fso as Object
Set fso = CreateObject("Scripting.FileSystemObject")

これでOKです。
参照設定で、Microsoft Scripting Runtimeをチェックしておくと、ヘルプ機能とかがフルに使えるので便利です。
フォルダを作成する
Dim fso as Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder フォルダ名

これで好きなフォルダを作成できます。
せっかくなので、「フォルダがすでにあるかどうかを調べて、ない場合には作成する」というのをやりましょう。
flag = objFSO.FolderExists(フォルダ名)
If flag = False Then
fso.CreateFolder フォルダ名
end if

FolderExists(フォルダ名)はFileSystemObjectのメソッドで、フォルダの存在を調べてくれるものです。
あればTrue、なければFalseが返ってきます。 ちょっとまどろっこしい書き方にしましたが、明示的に何をやっているか分かりやすいのでこういう書き方にしました。


PVランキング 人気ブログランキングへ

[VBA] ファイルの存在を調べる DIR

step4.5(リンク)で、一括で複数ファイルの保存を行う際に、保存ファイル名を連番にする方法を学びました。
その際に利用したのが、DIR関数。
地味な関数で、ぱっと見どう使っていいか分かりにくいやつの一つだと思います。

NTTフレッツ光


構文
Dir[(pathname[, attributes])]

ヘルプで詳細を確認してみましょう。

pathname
省略可能です。ファイル名を表す文字列式を指定します。
フォルダ名およびドライブ名も含めて指定できます。
引数 pathname に指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。

attributes
省略可能です。

ふーんって感じですね。


ないことを確認するには?
ヘルプの後半にある「指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。
がポイントです。

If Dir(パス名)<>"" then
'ファイルがないときの処理
Else
'ファイルがあるときの処理
End if

と書いてあげれば、いいわけです。
step4.5では、Do Whileを使って指定ファイルが見つからなくまでDir関数を使って、ないことが確認できた
ところで連番の数字を確定させています。




PVランキング 人気ブログランキングへ

2011年11月21日月曜日

[エッセイ] 仕事をしたつもり

あなたのオフィスにこんな人はいませんか?
・なぜかいつも忙しそうにしている
・作成物を印刷して、蛍光ペンでダブルチェックの印をたくさんつけている
・時間を賭けている割に、ミスが多い
他にもいろんなパターンがありそうですが、要するに効率の悪い人です。







NTTフレッツ光







最近は不景気なせいかチームのメンバーが減っても補充がないんですよね。
5人でやっていた仕事を一時的だということで3人でひーひー頑張る。
気づくとミスをやらかしていて、再発防止策を講じるということで作成物へのチェック作業が増える。
手数が増えて、ひーひーがひーひーひーで頑張る。
で、またミスをやって…の繰り返し。




不思議なことに、ひーひーも慣れてしまってずっと文句も言わずにひーひー言っている人がオフィスには
必ず一人はいます。
アウトプットは微妙な割に、ひーひーと全力出してるから、周囲はそこそこ温かい目で評価する。
本人も忙しいので仕事している気になっているし、残業代がきちんと出る企業であればお財布は周囲の
人の視線以上に温かい。

最近はやりの『仕事をしたつもり』にその辺の心理について解説されています。
上記に自分がちょっとでもあてはまる感じる人は騙されたと思って読んでみて下さい。
目からうろこですよ、きっと


で、今回言いたいことはたった一つ

ちゃんと頭を使って、物事を整理すれば、
仕事は絶対に今より短時間で終わります。







具体例をひとつご紹介。
ボクの昔の上司で超絶な方がいました。
・海外支店の拠点長
・兼、現地販売責任者
・兼、支店の総務部部長
を全部こなしていたそうです。

超絶に頭のいい人でした。いろんな断片情報から全体像を描くのが上手い人でした。
ちょっと違いますが、「1聞いて、10分かる人」です。

ボクはこんな上司には慣れませんが、プログラミングという武器で少しでも近付きたいです。
その試行錯誤から生まれたアウトプットをみなさんと共有できたら嬉しい限りですね。



PVランキング 人気ブログランキングへ