■1.「範囲を設定し、出力する」という2段階の処理で発行
PublishObjectオブジェクトは、「ブック内のどの個所をどのようにHTML形式で保存するか」といった情報を記録したものといえます。実際にSheet1のセルA1〜B10をHTML文章として書き出したい場合のコードは、以下のようになります。
ActiveWorkbook.PublishObjects.Add _
SourceType := xlSourceRange, _
Filename := "¥¥BossPC¥報告書¥日報.htm", _
Sheet := "Sheet1", _
Source := "A1:B10", _
HtmlType := xlHtmlStatic, _
DivID := "Sample"
Title := "出力のサンプル"
' ここまでで「どの範囲をどのように保存するか」の定義
ActiveWorkbook.PublishObjects(1).Publish
' 定義した範囲をHTML形式に「発行」する
HTML形式での書き出しは、まず、PublishObjectsオブジェクトに対し、「どの範囲をどのように保存するか」の設定を定め、次にその設定に応じて「Publishメソッド」で HTML形式で書き出す、いわゆる「発行」を行なうという2ステップを踏みます。さらに、一度設定を行なったPublishObjectオブジェクトはブックに保存されますので、同じ範囲をもう一度発行したい場合は、
ActiveWorkbook.PublishObjects(1).Publish
と「発行」部分を記述するだけで同じ設定で書き出すことができます。
また、PublishObjectオブジェクトはひとつのブックに対して複数設定できるので、発行したい範囲をいろいろなシート上の場所に設定しておき、目的に応じてPublishObjectオブジェクトの集まりである「PublishObjectsコレクション」から、発行する組み合わせを変えて、目的に応じたHTML文章を作成することができるのです。ちょうど「PublishObjects」という、料理で言うレシピ集に個々のレシピを作成しておき、「じゃあ、今日は1番目と3番目のレシピでお願い」という組み合わせを選んで料理を作っていく――そんなイメージでとらえていただくと理解しやすいのではないでしょうか。