ブログでVBAのコードを載せる場合、どうしてもページが縦長になってしまう。
以前 ↓ こちらのブログで、ソースコードを折りたたむHTMLが紹介されているのを知った。
nn-hokuson.hatenablog.com
しかし如何せん、HTMLを毎回準備するのが結構手間だったりして、一回試したきりやらなくなっていた。
でもやっぱり縦長の記事が続くと、何とかしたくなる。そこで、次のようなマクロを作成してみた。
- 一旦、ソースコードをコピーしてクリップボードに貼り付ける(手動)
- 作成したマクロを起動。クリップボードにコピーした内容の前後に、折り畳み用のHTMLを追加する(自動)。
- 追加した内容を、再びクリップボードに貼り付ける(自動)
- ブログに貼り付ける(手動)
この方法で、ソースコードを折りたたむマクロ自信を折りたたんだのがこちら。
Sub 折り畳み()
Dim col As Collection
Set col = New Collection
col.Add "<div onclick=""obj=document.getElementById('oritatami_part').style; obj.display=(obj.display=='none')?'block':'none';"">"
col.Add "<a style=""cursor:pointer;"">◆ソースコード(クリックで展開)◆</a>"
col.Add "</div>"
col.Add "<div id=""oritatami_part"" style=""display:none;clear:both;"">"
col.Add ">|vb|"
Dim CB As DataObject
Set CB = New DataObject
CB.GetFromClipboard
Dim temp As String
temp = CB.GetText
Dim SplitSeq As Variant
SplitSeq = Split(temp, vbNewLine)
Dim i As Long
For i = LBound(SplitSeq) To UBound(SplitSeq)
col.Add SplitSeq(i)
Next
col.Add "||<"
col.Add "</div>"
Dim seq As Variant
ReDim seq(1 To col.Count)
For i = 1 To col.Count
seq(i) = col.Item(i)
Next
CB.SetText Join(seq, vbNewLine)
CB.PutInClipboard
End Sub
何とか、上手くいったようです。
参考まで。