2011年6月22日水曜日

MS Outlook でメールヘッダを見る

MS Outlookでメールのヘッダを見ようと思ったが、操作が分からなかったので調べてみた。

リボンの上部の「メッセージタブ」をクリック。
リボンの下段「オプション」の右の 「』をクリック。
メッセージオプションというダイアログが出る。
下段の「インターネットヘッダー」の小さなボックスの中にメールヘッダーが表示されている。(灰色で分かりにくいが。)

MSサポートによると
http://office.microsoft.com/ja-jp/outlook-help/HA001230300.aspx#BM2

メッセージ ヘッダーを表示する
メッセージを開きます。
[メッセージ] タブの [オプション] で (ダイアログ ボックス起動ツール) をクリックします。
[メッセージ オプション] ダイアログ ボックスの [インターネット ヘッダー] ボックスに、電子メール メッセージ ヘッダーが表示されます。

2011年6月5日日曜日

VBScript カンペ

作業にVBSを使ったので、調べた内容をメモ。

Hello World
 WScript.Echo "Hello World"

文法
 行末にセミコロンは不要。
 コメントアウト
  シングルクォーテーション以降はコメント扱いになる。
  複数行コメント【/* コメント */】は対応していない。
 マルチステートメント
  コロン【:】で複数命令を1行で記述できる。
 コードの途中改行
  行末にアンダーバー【_】を入れると、次の行がコードの続きとして扱われる。
 変数名、関数名は大文字小文字の区別なし。
 オブジェクトへの参照を代入する。
  Set

文字リテラル
 文字列はダブルクォーテーションで囲む。
 数字をダブルクォーテーションで囲めば、文字列として扱われる。
 文字の連結はアンパサント【&】を使う。
  "hoge" & "hoge"

型宣言
 なし、基本Variant型。
 変数宣言と同時に初期化できない。
  【Dim strTes="Hello World"】はエラーになる。
   マルチステートメントを使う。【Dim strTes : strTes="Hello World"】

関数宣言
 サブプロシージャ
  Sub TestSub(arg1,arg2)
   strSample =arg1 & arg2
   WScript.Echo strSample
  End Sub
 関数プロシージャ
  Function TestFunc(arg1,arg2) 
   TestFunc=arg1 & arg2
  End Function
 サブプロシージャと関数プロシージャの違い
  サブプロシージャ戻り値なし。
  関数プロシージャ戻り値あり。

関数呼び出し
 サブプロシージャ
  TestSub "aaa","bbb"
   括弧をつけるとエラーになる。
  Result = TestFunc("aaa","bbb")
   括弧をつけないとエラーになる。

変数のスコープ
 プロシージャ内部で変数を宣言した場合、プロシージャ内でローカル変数となる。
 プロシージャ外部で変数を宣言した場合、スクリプトレベル変数と言うグローバル変数となる。
  プロシージャ内で参照可能なので、変数名が被らないように注意が必要。
  main()を宣言しスクリプトレベル変数を宣言しないようにする。
   Call main()
   Sub main()
    '処理を記述する。
   End Sub

条件分岐
 If文
  If (intMonth < 1 Or 12 < intMonth) Then
   WScript.Quit(0)
 ElseIf 条件式 Then
  実行文
  End If
 For文
  For i = 1 To 10 Step 1
   hoge=hoge & i
  Next
 GotoはSub又はFunctionの呼び出しで代用する。
 WScript.Quit(0)がEndに相当。

演算子
 論理積
  And
 論理和
  Or

ファイル入出力
 テキストファイルを1行ずつ読み込む。
  Dim strFilePath : strFilePath = "FileName.txt" '相対パス、絶対パスともに可。
  Dim objFileSystem : Set objFileSystem = CreateObject("Scripting.FileSystemObject")
  Dim objReadFile : Set objReadFile = objFileSystem.OpenTextFile(strFilePath)
  Do Until ( objFile.AtEndOfStream )
   WScript.Echo objReadFile.ReadLine
  Loop
  objFile.Close
 ファイル書き込み
  Dim strFilePath : strFilePath = "FileName.txt" '相対パス、絶対パスともに可。
  Dim objFileSystem : Set objFileSystem = CreateObject("Scripting.FileSystemObject")
  Dim objWriteFile : Set objWriteFile = objFileSystem.CreateTextFile(strFilePath, True)
  objWriteFile.WriteLine("hoge hoge")
  objWriteFile.Close

ファイルの実行
 DOSプロンプトの実行
  Dim objShell : Set objShell = CreateObject("WScript.Shell")
  objShell.Run "cmd.exe /c dir > DirResult.txt",0
   0 非表示、1 通常ウィンドウ、2 最小化、3 最大化
 プログラムの起動
  Dim objShell : Set objShell = CreateObject("WScript.Shell")
  objShell.Run "C:\Windows\System32\notepad.exe"

その他
 改行コード
  Chr(13) & Chr(10)
 文字列切り出し
  Mid(切り出し対象,何文字目から,何文字取り出す)
  一文字目は0でなく、1で表わされる。

雑テクニック
 YYYYMMDDHHmmの文字列作成
  Mid(Now(),1,4) & Mid(Now(),6,2) & Mid(Now(),9,2) & Mid(Now(),12,2) & Mid(Now(),15,2)
 先月の月を返す
  Month(DateSerial(Year(Date), Month(Date), 0))
 月の最終日付を返す
  Day(DateSerial(intYear, intMonth + 1, 1) - 1)
 キャンセルボタンを押したときの処理。
  intMonth = InputBox("月を入力してください",,Month(DateSerial(Year(Date), Month(Date), 0)))
  IF IsEmpty(intMonth) Then
   WScript.Quit(0)
  End If

課題
 On Error Resume Nextのエレガントな使い方。

参考
 http://msdn.microsoft.com/ja-jp/library/cc392489.aspx

Excelで特定行を複数ページに繰り返し印刷する

複数ページにわたる縦長の表を印刷するときに、
タイトル行を各ページに印刷できる。

ページレイアウト>印刷タイトル>

タイトル行をクリックした後、繰り返し表示させたい部分を選択する。

Excelで秒を0にする

Excelで時刻データの秒を切り捨て、0秒でそろえる方法。

=DATEVALUE(TEXT(【セル番地】,"yyyy/m/dd hh:mm")) + TIMEVALUE(TEXT(【セル番地】,"yyyy/m/dd hh:mm"))

Barracudaの分毎の処理(許可/拒否)の統計をとる時に使った。

生ログをエクセルで開き、秒を切り捨て。
ピポッドテーブルで集計。

Excelで順位をつける方法

たとえば100、95、95、92、90、90、90、80、70、65というデータがあって、
1、2、2、4、5、5、5、8、9、10という順位をつけたい場合。

あらかじめ、データは降順に並べておく。
データをB1~B10に張り付ける。
A1には1を入力、A2には【=IF(B1=B2,A1,ROW())】を入力。
A2をコピーし、A3からA10に張り付ける。

A1~A10に順位が表示される。




データを2行目以降に入力した場合は、順位がずれてしまう。
【=IF(E4=E5,D4,ROW()-3)】のように、微調整する必要がある。
画像のように、1位のセルの上に3行あいているときは3を引く。


6/22追記、rank関数で出来ました。