三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

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

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

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

Outlook VBAで、選択された氏名+フリガナを使用して、
仕事(タスク)を作成してみました。

選択されたアイテムを知るには、
ActiveExplorer.Selection
を使い、

解説とテスト
Outlook VBA ActiveExplorer.Selection 選択されているアイテムを知りたい - 三流君 ken3のmemo置き場

仕事の作成は、

Outlook VBA 仕事・タスク As TaskITEM を 探る - 三流君 ken3のmemo置き場

で、
TaskItemを探って、
Application.CreateItem(olTaskItem) '新規に仕事のITEMを作成
で、新規にアイテムを作り、
作成したVBA Subを

Outlook処理 途中で作成ミスに気がついたが... - 三流君 ken3のmemo置き場

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

テスト

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

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

要求仕様

>予定表ビューの右端にTODOバーというのがありまして、
>ここに仕事をリスト形式に並べて表示させておくことができます。
.
>連絡先ビューの画面右端にTODOバーが表示されていましたが、
>同じものが予定表ビューでも表示できます。
>Ken3さんの画面ではたたまれていたようです。

.
.

>このリストは詳細登録画面を界さずに
>そのまま画面中央の予定表の任意の位置にドラッグ&ドロップすることが出来、
>時間の長さを自由に変えたり、分類を使って作業内容を色分けで表示することもできます。
.
>リストには通常仕事の件名が表示されますが、
>ここにID、氏名、フリガナを表示させられれば画面を切り替えたり、
>文字を入力したりすることなくすばやく目的の顧客を選んで予約を記録できるなと考えています。
.
>連絡先から仕事リストを作る事、
>他の管理ソフトの情報と同期させる事
>が自動で出来ないととても実戦には使えないと思っております。

テスト内容

連絡先から
顧客を選択後、ボタンを押すと、
選択した顧客名・フリガナ・IDで仕事リストが作成される。

予定表に切り替え、TO DOから仕事リストを予定表に登録
※ここは、Outlookの機能、操作だけです

この流れをテストする。

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

作成した ソースコード

下記、作成したソースコードです。
※まだ、バグもありそうですが、改良して使ってみてください。

'---------------------------------
'選択された連絡先の氏名+フリガナを使い、仕事を作成
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をねじ込んで(新規にフィールド作成?)すれば、
なんとか形にはなるのかなぁ。
先が見えたような、見えないような・・・

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)