【入門編】Taskの「Notes」フィールドにHTMLタグを埋め込み、見やすい進捗レポートを生成する – Project VBA解析バイブル

スポンサーリンク

Project VBAを掌握する:Taskの「Notes」にHTMLを刻み、レポートを自動化せよ

こんにちは。現場で泥臭く、かつスマートにプロジェクトを管理しているエンジニアの皆さん。

「Projectのタスクメモ、ただの文字列じゃ情報が埋もれてしまわないか?」
「進捗報告のために、毎回コピペして整形する作業に何分使っている?」

もし心当たりがあるなら、今すぐその手作業を捨ててください。Project VBAを使えば、Taskの「Notes」にHTMLタグを流し込み、後工程(Wordやメール、Webへの転送)でそのまま美しいレポートとして再現することが可能です。

今日は、マクロの記録から一歩先へ進みたいあなたへ、「オブジェクトモデルの神髄」を伝授します。

1. Project VBAの「地図」を頭に入れよう

Project VBAを扱う上で、まずはこの階層構造(オブジェクトモデル)を理解してください。

  • Application: プロジェクト全体を包む箱。
  • Project: 開いているプロジェクトファイル。
  • Task: 計画の最小単位。今日触る「Notes」はここに宿る。

[Application]
└ [ActiveProject]
└ [Tasks]
└ [Task.Notes] ← ここを攻略する!

初心者が陥りやすい罠は、「Taskそのもの」に色々な情報を詰め込みすぎることです。Notesは強力なテキストコンテナですが、ProjectのUI上ではHTMLは表示されません。 しかし、これこそが「後工程へのトリガー」になります。

2. 実践:NotesにHTMLを流し込むコード

以下のコードは、選択中のタスクのメモをHTML形式で書き換える基本の型です。

Sub EmbedHtmlToNotes()
Dim tsk As Task
Dim htmlTemplate As String

‘ 選択されているタスクを対象にする(なければ終了)
If ActiveSelection.Tasks.Count = 0 Then
MsgBox “タスクを選択してください。”
Exit Sub
End If

Set tsk = ActiveSelection.Tasks(1)

‘ HTMLタグを文字列として構築する
‘ ここが後工程(メールやレポート)で化ける魔法のソースです
htmlTemplate = “

” & _

タスク名: ” & tsk.Name & “

” & _

進捗率: ” & tsk.PercentComplete & “%

” & _

  • 開始日: ” & tsk.Start & “
  • ” & _

  • 期限: ” & tsk.Finish & “

” & _

‘ TaskのNotesに流し込む
tsk.Notes = htmlTemplate

MsgBox “タスク「” & tsk.Name & “」にHTMLを埋め込みました。”
End Sub

このコードのポイント

  • 文字列結合の基本: `&` を使って変数をタグの間に挟み込みます。
  • 属性の制御: `style=’color:red;’` のようにCSSをインラインで書くのがコツです。これにより、OutlookやWordに貼り付けた瞬間にスタイルが適用されます。

3. 陥りやすいエラーと回避策

VBAエンジニアとしての登竜門、以下の壁にぶつかったら思い出してください。

① 「Notesが空っぽになってしまう」問題

Notesフィールドは非常に繊細です。`tsk.Notes = “”` と空文字を入れると、以前のメモが全て消えます。既存のメモを残したい場合は、`tsk.Notes & vbCrLf & htmlTemplate` のように、既存データと結合させる工夫が必要です。

② 文字列の「エスケープ」問題

HTMLタグの中に `”`(ダブルクォーテーション)を記述したい場合、VBAでは `””` と二重にする必要があります。

  • NG: `
    `
  • OK: `
    `

4. なぜ「HTMLで書く」のが最強なのか?

単なるテキストで「進捗率:50%」と書くのと、HTMLで `50%` と書くのでは、情報の「価値」が違います。

  • 後工程の自動化: OutlookのVBAでこのNotesを読み取り、そのままメール本文として送信すれば、綺麗なレイアウトの報告書が数秒で完成します。
  • 検索性: 特定のクラス名やタグでフラグを立てておけば、後から「進捗が遅れているタスクだけを抽出する」といったフィルタリングも容易です。

最後に:エンジニアとしての心得

Project VBAは、単なる事務作業の自動化ツールではありません。「プロジェクトの可視化を制御する」ためのアーキテクチャです。

今回紹介した「HTML埋め込みテクニック」は、あなたの作ったプロジェクトデータが、他のシステムやドキュメントと会話するための「共通言語」になります。

ここをクリアしたあなたは、もう「マクロを動かす人」ではなく「業務の仕組みを設計するエンジニア」です。次はぜひ、全てのタスクに対して一括でこの処理を走らせるループ処理に挑戦してみてください。

コードのことで悩んだら、いつでもこの場所へ戻ってきてください。応援していますよ。

タイトルとURLをコピーしました