読者です 読者をやめる 読者になる 読者になる

三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



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

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

作成した ソースコード

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

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