ken3memo (三流君)

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)




[記事一覧、バックナンバーを見る]

2012-02-14

Outlook VBA ActiveExplorer.Selection 選択されているアイテムを知りたい

Outlookで現在選択されているアイテムを知るには、

ActiveExplorer.Selection

から探るといいかも。

アイテムの数は

? Application.ActiveExplorer.Selection.Count

1

で、選択されているアイテムの数がわかります。

(選択されている数、ctrl+クリックで複数選択可能なので2とか複数返ることがある)

アイテムの種類

次に選択されているのが、どの種類のアイテム(メール,仕事,予定,連絡先)を知りたかったので、

1番目のアイテムのタイプを表示させてみます。

? typename(Application.ActiveExplorer.Selection.Item(1))

MailItem

など、.Item(1)TypeName関数で探ると、型の名前が返ってきます。

あとは、目的(使用したいアイテム)の型を宣言して

Dim cITEM As ContactItem '連絡先

Dim tITEM As TaskITEM 'タスク、仕事

Dim mITEM As MailItem 'メール アイテム

Dim aITEM As AppointmentItem '予定、アポ アイテム

みたいに、型宣言すると、プロパティやメソッドが探りやすいです。

値を取り出したり、使用するときは、

Set oITEM = Application.ActiveExplorer.Selection.Item(1)

とすると、oITEM.XXXX で 使いやすいと思います。

探りかた、操作動画

いつもの、

途中で固まったり 右往左往・迷ったりしている酔っ払い動画です。

YouTube - Broadcast Yourself

D

↑最後、キャプチャーソフトが途中で止まってしまいましたが、気にしないでください。

テストのコード

下記、テストのコードです。

いろいろと変更して、遊んでみてください。

'現在選択されているアイテムをテストで表示する
Sub chkITEM_TEST()

    Dim cITEM As ContactItem      '連絡先
    Dim tITEM As TaskITEM         'タスク、仕事
    Dim mITEM As MailItem         'メール アイテム
    Dim aITEM As AppointmentItem  '予定、アポ アイテム

    Dim nSelectCNT As Integer     '選択されている数、ctrl+クリックで複数選択可能なので
    Dim n As Integer  'ループのカウンター

    nSelectCNT = Application.ActiveExplorer.Selection.Count '選択された件数

    '選択されているアイテムのプロパティの一部をテストで表示する
    Debug.Print "選択されている件数は " & Application.ActiveExplorer.Selection.Count & " 件です。"
    
    Debug.Print "TYPEは " & TypeName(Application.ActiveExplorer.Selection.Item(1))
    Select Case TypeName(Application.ActiveExplorer.Selection.Item(1))
        Case "MailItem"  'メール
            For n = 1 To nSelectCNT  '配列が1からなので注意?
                Debug.Print n & "番目 item(n)"
                Set mITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする
                Debug.Print mITEM.Subject  '件名
                Debug.Print mITEM.To  '宛先
                Debug.Print mITEM.Body  '本文
                            '↑他にも 値、プロパティがあるけど、テストで表示
            Next n
        
        Case "TaskItem"  'タスク、仕事
            For n = 1 To nSelectCNT  '配列が1からなので注意?
                Debug.Print n & "番目 item(n)"
                Set tITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする
                Debug.Print "件名:" & tITEM.Subject '件名
                Debug.Print "本文:" & tITEM.Body    '本文
                            '↑他にも 値、プロパティがあるけど、テストで表示
            Next n
    
        Case "AppointmentItem"  '予定、アポ
            For n = 1 To nSelectCNT  '配列が1からなので注意?
                Debug.Print n & "番目 item(n)"
                Set aITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする
                Debug.Print "件名" & aITEM.Subject  '件名
                Debug.Print "本文" & aITEM.Body     '本文
                            '↑他にも 値、プロパティがあるけど、テストで表示
            Next n
    
        Case "ContactItem"  '連絡先
            For n = 1 To nSelectCNT  '配列が1からなので注意?
                Debug.Print n & "番目 item(n)"
                Set cITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする
                Debug.Print cITEM.Email1Address   'メールアドレス1
                Debug.Print cITEM.YomiCompanyName
                Debug.Print cITEM.CompanyName
                
                Debug.Print cITEM.YomiLastName
                Debug.Print cITEM.LastName
                Debug.Print cITEM.YomiFirstName
                Debug.Print cITEM.FirstName
                            '↑他にも 値、プロパティがあるけど、テストで表示
            Next n
        
        Case Else
            Debug.Print "その他、メモなど?"
    End Select

End Sub


終わりの挨拶

選択されたアイテムを取得できそうなので、

連絡先からデータをひっぱってきて、他のアイテム作成(CreateITEM)が可能になるかなぁ?

次は、ハマらないで完成するといいなぁ(笑)

2/14 バレンタインデーのネタ スパム・ウイルスメールは?

2/14ですね。

今年も大量にバレンタインのスパム・ウイルスメールが来るかなぁ・・

と思って、待っていたら(ぉぃぉぃ)

今のところ、フィルターがすくっているのか?ネタになるようなメールが来ない。

ネタに待っていると来ないし、うまくいかないもんですね(笑)

昔のネタ

昔、コンビニ店長時代のネタは

三流君コンビニ:バレンタインデー・チョコレート、包装ネタ

http://www.ken3.org/24h/backno/24h025.html

かなぁ。

仕入=販売数+在庫数 に データ上はなるんだけど、

バレンタインチョコはなぜか数値が合わなかったなぁ。

盗られたのか?あとは個別に包装してください とか レジが混雑してスキャンミスでお金をもらい忘れたパターンかなぁ?

不思議なことに、ホワイトデーの商品は、

仕入=販売数+在庫数

で ぴったり計算があって、びっくりしたもんだ。

※あと、びっくりしたのが、ホワイトデーのほうが仕入れ金額が2.5倍でした。

※※3倍までいってなかったけど、10年前はコンビニでチョコやお返しの商品が売れてたなぁ。。。

宣伝?

昨日 2/13の人気商品です

AKAI EIE (16bit Electromusic Interfa 2月13日...[続きを見る]

ニット メンズ カットソー カシミアタッチ Vネック ニットソー 【q1 2月13日...[続きを見る]

INAX フラッシュバルブ用ピストン部 → 2月13日...[続きを見る]

PrintMusic 2011 → 2月13日...[続きを見る]

MEDIAS LTE N-04D専用スーパーフェザーケース(ハード)(液 2月13日...[続きを見る]

ATLAS アトラスバッテリー 95D31L → 2月13日...[続きを見る]

大特価!本家本元ドイツBRITA【ブリタ】 CLASSIC クラシック 2月13日...[続きを見る]

カードファイト!! ヴァンガード 【ファントム・ブラスター・オーバーロー 2月13日...[続きを見る]

SHARP Brain カラー電子辞書 高校生向け オレンジ色 PW-G 2月13日...[続きを見る]

僕は友達が少ない ぽーたぶる (通常版) (特典なし) → 2月13日...[続きを見る]

イグニオ(IGNIO) ジュニア スノーボード インナーパンツ(ショート 2月13日...[続きを見る]

ウェストレース&ガーター網タイツ[2011-2] → 2月13日...[続きを見る]

お砂場着 UVカット・撥水加工 ピンク 90cm 入園・入学のご準備に 2月13日...[続きを見る]

ももドラ momo+dra(Blu-ray Disc) → 2月13日...[続きを見る]

[カシオ]CASIO 腕時計 OCEANUS オシアナス タフソーラー 2月13日...[続きを見る]

Amazon.co.jp限定】生写真付  きんぎょ 松井玲奈ファースト 現在人気の 【Amazon.co.jp限定】生写真付  きんぎょ 松井玲奈ファースト写真集 など 本・書籍を紹介する(...[続きを見る]

キーコーヒープラリネ (6粒入り) → 2月13日...[続きを見る]

Outlook VBA 選択された連絡先の氏名+フリガナを使い、仕事を作成

Outlook VBAで、選択された氏名+フリガナを使用して、

仕事(タスク)を作成してみました。

選択されたアイテムを知るには、

ActiveExplorer.Selection

を使い、

解説とテスト

Outlook VBA ActiveExplorer.Selection 選択されているアイテムを知りたい - ken3memo (三流君)

仕事の作成は、

Outlook VBA 仕事・タスク As TaskITEM を 探る - ken3memo (三流君)

で、

TaskItemを探って、

Application.CreateItem(olTaskItem) '新規に仕事のITEMを作成

で、新規にアイテムを作り、

作成したVBA Subを

Outlook処理 途中で作成ミスに気がついたが... - ken3memo (三流君)

みたいな感じで、コマンドバーに登録しました。

テスト

要求仕様を満たしているか、テストしてみます。

手作業で実行しながら、確認してみます。

要求仕様

>予定表ビューの右端にTODOバーというのがありまして、

>ここに仕事をリスト形式に並べて表示させておくことができます。

.

>連絡先ビューの画面右端にTODOバーが表示されていましたが、

>同じものが予定表ビューでも表示できます。

>Ken3さんの画面ではたたまれていたようです。

.

.

>このリストは詳細登録画面を界さずに

>そのまま画面中央の予定表の任意の位置にドラッグ&ドロップすることが出来、

>時間の長さを自由に変えたり、分類を使って作業内容を色分けで表示することもできます。

.

>リストには通常仕事の件名が表示されますが、

>ここにID、氏名、フリガナを表示させられれば画面を切り替えたり、

>文字を入力したりすることなくすばやく目的の顧客を選んで予約を記録できるなと考えています。

.

>連絡先から仕事リストを作る事、

>他の管理ソフトの情報と同期させる事

>が自動で出来ないととても実戦には使えないと思っております。

テスト内容

連絡先から

顧客を選択後、ボタンを押すと、

選択した顧客名・フリガナ・IDで仕事リストが作成される。

予定表に切り替え、TO DOから仕事リストを予定表に登録

※ここは、Outlookの機能、操作だけです

この流れをテストする。

テスト動画

2012/02/14 三流君 Outlook VBA テスト動画 その3 - YouTube

D

作成した ソースコード

下記、作成したソースコードです。

※まだ、バグもありそうですが、改良して使ってみてください。

'---------------------------------
'選択された連絡先の氏名+フリガナを使い、仕事を作成
Sub 連絡先の氏名フリガナで仕事を作る()

    Dim cITEM As ContactItem      '連絡先
    Dim tITEM As TaskITEM         'タスク、仕事

    Dim nSelectCNT As Integer     '選択されている数、ctrl+クリックで複数選択可能なので
    Dim n As Integer  'ループのカウンター

    Dim strNAME  As String  '姓名+フリガナ※仕事の件名
    
    '選択が0件なら抜ける
    'ActiveExplorer.Selection解説 http://d.hatena.ne.jp/ken3memo/20120214/1329170762 
    If Application.ActiveExplorer.Selection.Count = 0 Then
        MsgBox "連絡先が選択されていません"
        Exit Sub    '関数を抜ける
    End If
    
    '選択されているのが連絡先か?チェックする
    If TypeName(Application.ActiveExplorer.Selection.Item(1)) <> "ContactItem" Then  '連絡先以

外か?
        MsgBox "連絡先を選択してください"
        Exit Sub    '関数を抜ける
    End If
    
    'ここから、選択された件数分 仕事を作成する
    nSelectCNT = Application.ActiveExplorer.Selection.Count '選択された件数
    
    For n = 1 To nSelectCNT  '配列が1からなので注意?
    
        '選択されたn番目の連絡先を変数に入れる
        Set cITEM = Application.ActiveExplorer.Selection.Item(n)
    
        '新しい仕事のアイテムを作成する
        Set tITEM = Application.CreateItem(olTaskItem) '新規に仕事のITEMを作成
        'oITEM.Display  '画面に表示するときは.Display チラつくのでコメントにした
    
        '連絡先の氏名+フリガナを抜き出し、&でつなげる
        strNAME = cITEM.LastName & cITEM.FirstName
        strNAME = strNAME & " " & cITEM.YomiLastName & cITEM.YomiFirstName
        
        'データを仕事にセットする
        tITEM.Subject = strNAME   '件名として、上↑で作成した名前+フリガナをセットする
        tITEM.StartDate = Date    'スタート日は今日をセット
        '↑他にもプロパティがたくさんあるけど・・
    
        'タスクを登録
        tITEM.Close olSave  'olSaveで閉じるときに保存(セーブして終了)
    
        Set tITEM = Nothing 'オブジェクト変数解放
    
    Next n
    Set cITEM = Nothing  'オブジェクト変数解放
    
    MsgBox "仕事の新規登録が終了しました" & vbCrLf & "予定を組んでください"
        
End Sub

終わりの挨拶

あとは、連絡先の項目に 顧客IDをねじ込んで(新規にフィールド作成?)すれば、

なんとか形にはなるのかなぁ。

先が見えたような、見えないような・・・



[記事一覧、バックナンバーを見る]




.


その他blog

流行のBlogで情報発信(手打ちのHTMLよりブログで更新が楽なので)
・はてなを使用して[id:ken3memo]メモ的に放り込んでいるブログです
・はてなを使用して[id:ken3link]商品リンクなどを放り込んでいるサブidのブログです
・[その他商品紹介Blog] ・・・ 内容の薄い、商品のメモ?です

メニューほか

分類・カテゴリー一覧