ヤフーブログのかんたんモードでVBAコードを投稿するときの注意と手順
注意
Visual Basic Editorからコピーするとタブ文字が半角スペースになる
一つの記事に投稿できる文字数はhtmlタグ文字含めて2万文字なので
連続した半角スペースはタブ文字に置換して文字数を減らしてから投稿
手順
エクセルなどのVisual Basic Editorからコピーするとタブ文字が半角スペースになってしまうので他のテキストエディタにコピペしてから
連続した半角スペースはタブ文字に置換する
必要ない半角スペースは削除する
これで文字数を減らすことができる
一つの記事に投稿できる文字数の上限は(20000 - α)文字まで
Yahoo!ブログヘルプ - ブログに記事を投稿する
https://www.yahoo-help.jp/app/answers/detail/a_id/45525/p/522
ここの3-Fを見ると投稿できる文字の上限は
かんたんモードの場合、各ボタンの機能はそれぞれHTMLタグとして文字数をカウントしています。 そのため、入力欄で20,000文字を超えていなくても文字数を超過していることがあります。
例えば入力欄に14913文字の場合
20000-14913=5087
5000文字の余裕があるように見えても場合によってはhtmlタグで5000文字以上消費してしまい2万文字を超えてしまうこともある
超えてしまったら投稿できないはずなんだけど
確認ボタンでは普通に確認できる
投稿ボタンを押して初めて投稿できないことがわかる(エラーになる)
投稿ボタンを押すと表示されるエラーは
もちろんしばらく(10分後、1時間後、1日後)してから投稿しても変化しない
なぜなら目に見えないhtmlタグに5000文字以上も消費されて合計20000文字を超えてしまっているから
解決法は文字を減らすしかない
Visual Basic Editorからコピペするとタブ文字が半角スペースになってしまう
2行目をコピペすると
Dim i As Long
こんなふうに半角スペース4つになったものが貼り付けられる
これはVisual Basic Editorの仕様みたいで他のテキストエディタに貼り付けた場合も同じになる
テキストエディタのMeryに貼り付けた場合
同じくタブ文字が半角スペース4つになっている
これだと無駄に文字数を消費してしまうので元のタブ文字に置換する
テキストエディタMeryで文字列の置換
半角スペースしかない行を改行に置換
検索する文字列に半角スペース*$入れて
置換後の文字列にはなにもなし
正規表現を使用するにチェックを入れて
すべて置換ボタン
続いて
半角スペース4つを一つのタブ文字に置換
検索する文字列に半角スペース4つ入れて
置換後の文字列に\t
正規表現を使用するにチェックを入れて
すべて置換ボタン
14913文字から
不必要な半角スペースを削除で
14673文字
半角スペース4つを一つのタブ文字に置換で
11346文字
14913-11346=3567文字削減
3567/14913=0.23
結構大きいね
最初はなんでエラーになるのかわからなくて、いろいろ試しているうちに文字数を減らすと投稿できるってのはなんとなくわかっていたんだけど、15000文字を投稿するときにhtmlのタグ文字だけで5000文字も使われているとは思わなかったんだよねえ
ここで思いついて試しに
5041行の改行だけしたものは投稿できた
htmlの改行タグは4文字使うみたいだから5041*4=20164で
20000文字超えているはずなんだけどなあ
次
倍の10082行だけの記事、これも投稿できた
次
行数は同じ10082行、すべての行に「a」の記事、これも投稿できた、えー
改行だけ5041行はok10081行もok、10081行10081文字は? - わてんのブログ - Yahoo!ブログ改行タグはカウントされないのかなあ
http://blogs.yahoo.co.jp/meteorite_waten/35180693.html
とにかく
Yahoo! JAPANカスタマーサービスの皆様のおかげでエラーになっていた記事が投稿できました、ありがとうございます
投稿できた記事
エクセルVBAでライフゲームその3 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14611521.html