ActiveWorkbook.PublishObjects(1).Publish
となります。最初に発行したいPublishObjectオブジェクトを指定し、Publishメソッドで与えられた設定どおりに発行を行ないます。この時、Publishメソッドに引数「True」を与えると、すでに同じ場所に同じ名前のファイルがあった場合、上書き保存して置き換えられます。逆に、引数「False」を設定すると、ファイルの末尾に発行したものが付け加えられます。同じ場所に同じ名前のファイルがない場合は、引数の値にかかわらず新規にHTML形式のファイルが作成されます。 Sub SetNippouPBO()
myName = "増田"
ActiveWorkbook.PublishObjects.Add _
SourceType := xlSourceRange, _
Filename := "¥¥BossPC¥報告書¥" & myName & "日報.htm", _
Sheet := Sheets(3).Name, _
Source := "B4:G4", _
HtmlType := xlHtmlStatic, _
DivID := "FirstOBJ", _
Title := myName & "今日のひとこと"
' 「今日のひとこと」を設定
ActiveWorkbook.PublishObjects.Add _
SourceType := xlSourceAutoFilter, _
Filename := "¥¥BossPC¥報告書¥" & myName & "日報.htm", _
Sheet := Sheets(1).Name, _
HtmlType := xlHtmlStatic, _
DivID := "SecondOBJ", _
Title := myName & "報告書"
' 1枚目のデータ入力シートのオートフィルタをかけて
' 絞り込んだ範囲を設定
End Sub
となります。2箇所の離れたシート上にあるデータをひとつのHTMLファイルにまとめるために、「FileName」プロパティに同一のものを設定してある点に注意してください。そしてこの2箇所のPublishObjectオブジェクトを発行するためのコードは、 Sub PublishNippou()
Sheets(1).Range("B3").AutoFilter _
Field:=1, Criteria1:=Format(Date, "m月d日")
' DATE関数を使い、当日のデータにフィルタをかけ
' データを絞り込む
With ActiveWorkbook
.PublishObjects("FirstOBJ").Publish True
.PublishObjects("SecondOBJ").Publish False
End With
' それぞれの範囲を引数を指定して「発行」
End sub
となります。PublishObjectオブジェクトにしっかりとDivIDプロパティを設定してあれば、それを利用して上記コードのように、PublishObjectsコレクションのなかから特定のPublishObjectオブジェクトを指定することも可能となります。結果は図6のように、離れた場所にあったデータがPublishメソッドの引数を「False」に設定したことにより、ひとつのHTML文章に結合されました。また、オートフィルタの範囲を指定した箇所も抽出後の該当データだけが表示されているのが確認できます。
図6:発行の組み合わせを上手に使って出力する |
![]() |
![]() |
![]() |
![]() |
![]() |