ブログ引っ越しました。

2011/08/12

今年2月からこのWordPress.comでブログを書いてきましたが、無料のサービスだけあって色々と自由に設定できず、改行も思ったように表示されなかったりして、どうにもこうにも使いづらかったので、この度思い切ってブログを引っ越すことにしました。

新しいブログは下記URLで、自分のHPと同じ場所に置くことにしました(^^)

新・初心者備忘録ブログ
http://www.ka-net.org/blog/

・・・半年経たずに移行することになるのなら最初からレンタルサーバーにブログツール入れておけば良かった!
とりあえず、このブログの記事はそのままにしておくつもりです。
(画像含めた移転が大変なので(^^; )

クラシックスタイルメニュー for Office 2010について

2011/07/03

Office 2007と2010にOffice 2003のようなメニューやツールバーを追加するソフト「クラシックスタイルメニュー for Office 2010」を公開していますが、先日アンケートを作成しました。

このアンケートやメールで何点かご要望をいただきましたので、今回はそれに対する回答として記事を書いてみます(内容は随時追加予定)。

2013/01/10 当記事は下記ページに移行しました。

・クラシックスタイルメニュー
http://www.ka-net.org/blog/?page_id=2546

documentModeが9にならない?

2011/05/07

下のソースコードは一般的なHTMLコードで、これをIE9で表示するとドキュメントモードは「IE9」(9)になります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
<p>hoge</p>
</body>
</html>

IE9用に書いたものなので当たり前の動作なのですが、これをVBSで下記のように書くと何故かドキュメントモードが「8」になってしまいます。
(DOCTYPEやX-UA-Compatibleが色々書かれているのは色々試した結果。どれも「9」にならず・・・)

Option Explicit

Dim s

'DOCTYPE
s = "<!DOCTYPE html>" & vbCrLf
's = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0//EN"">" & vbCrLf
's = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"">" & vbCrLf

s = s & "<html>" & vbCrLf
s = s & "<head>" & vbCrLf
s = s & "<meta charset=""UTF-8"">" & vbCrLf

'X-UA-Compatible
s = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=edge"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=100"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=IE9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=EmulateIE9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">" & vbCrLf
's = s & "<meta http-equiv=""X-UA-Compatible"" content=""IE=9; IE=8; IE=5"">" & vbCrLf

s = s & "</head>" & vbCrLf
s = s & "<body>" & vbCrLf
s = s & "<p>hoge</p>" & vbCrLf
s = s & "</body>" & vbCrLf
s = s & "</html>" & vbCrLf

With CreateObject("htmlfile")
  .clear
  .open
  .write s
  .close
  
  MsgBox "userAgent:" & .parentWindow.clientInformation.userAgent & vbCrLf & _
         "documentMode:" & .documentMode
End With

下位のドキュメントモードには設定できるのですが、う~ん・・・。謎です。
他に設定しないといけないところがあるのかなぁ・・・(?_?)

Google AdSense始めてみました。

2011/05/06

思いつきでホームページでGoogle AdSenseを始めてみました。
AdSense関連のサイトを見ると審査には時間が掛かるらしいのですが、申請後10分くらいで審査通過のメールが届きました。
審査がスピーディになったんでしょうか?
よく分かりませんが、とりあえずヘルプに従って広告設置。

しばらくこれで様子を見てみます。
飽きたら広告外して元通りにするかもしれません。

UndoRecordオブジェクトの使用例

2011/05/03

ユーザー設定の「元に戻す」機能を使用する(Word 2010 VBA)」でWord 2010で新たに追加されたUndoRecordオブジェクトを紹介していますが、今回はその使用例を紹介します。

Option Explicit

Public Sub Sample()
  Dim ur As Word.UndoRecord
  
  MsgBox "処理を実行します。", vbInformation
  Set ur = Application.UndoRecord
  ur.StartCustomRecord "My Custom Undo"
  
  '----------------------
  '一連の処理
  '----------------------
  Selection.TypeText "A"
  Selection.TypeParagraph
  Selection.TypeText "B"
  Selection.TypeParagraph
  Selection.TypeText "C"
  Selection.TypeParagraph
  Selection.TypeText "D"
  Selection.TypeParagraph
  Selection.TypeText "E"
  Selection.TypeParagraph
  Selection.TypeText "F"
  Selection.TypeParagraph
  '----------------------
  
  ur.EndCustomRecord
  If MsgBox("一連の処理を取り消しますか?", vbYesNo) = vbYes Then ActiveDocument.Undo
  Set ur = Nothing
End Sub

上記はほんの一例ですが、処理前にStartCustomRecordメソッドを入れることで、処理後にまとめて取り消すことができるようになります。

IME 2010 「DQNネーム辞書」(オープン拡張辞書)公開

2011/05/02

2012/02/23 辞書を更新しました。
詳細は「「DQNネーム辞書」を更新しました。」から。

DQNネーム(子供の名前@あー勘違い・子供がカワイソ)に登録されているDQNネームを登録したオープン拡張辞書を作成しましたので、下記リンクにて公開します。
辞書登録時のエラーチェックやフィルタリングで一部引っかかってしまいますが、2つの辞書合わせて約19,000個の名前を収録しています。

http://cid-92a165759188b352.office.live.com/browse.aspx/.Public/dctxc

公開を承諾してくださったDQNネーム管理者様にはこの場を借りてお礼申し上げます。

オープン拡張辞書の詳細や登録方法については下記リンクをご参照ください。

「オープン拡張辞書を追加する」
http://pc.nikkeibp.co.jp/article/technique/20100510/1024767/
「Microsoft Office IME 2010 オープン拡張辞書」
http://www.microsoft.com/japan/office/2010/ime/open-extended-dictionary.mspx

災害ボランティア検索APIをVBScriptから呼び出す

2011/04/27

災害ボランティア検索APIをVBScriptから呼び出してみます(エラー処理等手抜き)。
※ 要アプリケーションID

Option Explicit

Dim oXML
Dim oNode
Dim url
Dim status
Dim q '検索クエリー
Const AppID = "(アプリケーションID)" 'アプリケーションID

q = InputBox("検索文字列を入力してください。")
If IsEmpty(q) Then WScript.Quit
If q = "" Then WScript.Quit

url = "http://shinsai.yahooapis.jp/v1/volunteers?appid=" & AppID & "&query=" & EncodeURL(q)
Set oXML = GetXMLDocument(url)
If oXML Is Nothing Then WScript.Quit

WScript.Echo "■災害ボランティア情報(検索キーワード:" & q & ")"
WScript.Echo "--------------------"
On Error Resume Next
For Each oNode In oXML.SelectNodes("/Messages/Message")
  status = oNode.SelectSingleNode("Status").Text
  Select Case CInt(status)
    Case 0
      status = "募集終了"
    Case 1
      status = "現在募集中"
    Case Else
      status = "募集状況不明"
  End Select
  WScript.Echo "募集メッセージのタイトル:" &  oNode.SelectSingleNode("Title").Text & "(" & status & ")"
  WScript.Echo "情報が最後に変更された時間:" &  oNode.SelectSingleNode("UpdateTime").Text
  WScript.Echo "場所:" &  oNode.SelectSingleNode("Address").Text
  WScript.Echo "組織名:" &  oNode.SelectSingleNode("Organization").Text
  WScript.Echo "募集メッセージ:"
  WScript.Echo oNode.SelectSingleNode("Body").Text
  WScript.Echo "--------------------"
Next
If Err.Number <> 0 Then
  WScript.Echo "エラーが発生しました。"
  WScript.Echo "内容:" & Err.Description
  Err.Clear
End If
On Error GoTo 0
Set oXML = Nothing

Public Function GetXMLDocument(ByVal url)
'XML取得
  Dim oXML
  
  On Error Resume Next
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", url, False
    .Send
    Set oXML = .responseXML
  End With
  If Err.Number <> 0 Then
    Set oXML = Nothing
    Err.Clear
  End If
  On Error GoTo 0
  Set GetXMLDocument = oXML
End Function

Public Function EncodeURL(ByVal sWord)
'URLエンコード
  Dim d
  Dim elm
  
  sWord = Replace(sWord, "\", "\\")
  sWord = Replace(sWord, "'", "\'")
  Set d = CreateObject("htmlfile")
  Set elm = d.createElement("span")
  elm.setAttribute "id", "result"
  d.appendChild elm
  d.parentWindow.execScript "document.getElementById('result').innerText = encodeURIComponent('" & sWord & "');", "JScript"
  EncodeURL = elm.innerText
End Function

結果はリダイレクトで受け取るのが良さそうです。

Live HTTP HeadersをFirefox 4で使用する

2011/04/25

2011年5月6日追記:
mozdev.org – livehttpheaders: installationでFirefox 4に対応したLiveHTTPHeadersのversion 0.17が公開されました。
今後は下記のようにversion 0.16のファイルを編集しなくてもFirefox 4でLiveHTTPHeadersを利用することができます。

 

Live HTTP HeadersはFirefox 4に対応していませんが(2011年4月25日時点)、Live HTTP Headers 0.16のコメント部分に無理矢理対応させる方法が書いてあったので、メモ書き程度に一応書いておきます。

1. mozdev.org – livehttpheaders: installationから「livehttpheaders-0.16.xpi」ファイルをダウンロードします。
2. livehttpheaders-0.16.xpiファイルをZip解凍し、出力された「install.rdf」ファイルをテキストエディタで開きます。
3.<em:maxVersion>3.6.*</em:maxVersion>」部分を「<em:maxVersion>4.0.*</em:maxVersion>」に変更し、上書き保存します。
4. 2.で解凍したファイルを再度圧縮し、拡張子を「xpi」に変更します。
5. 4.のxpiファイルをFirefoxにドラッグ&ドロップします。
6. 画面の指示に従ってインストールします。

Firefox 4ではWebコンソールが使えるのでLive HTTP Headersを使わなくても大丈夫なのですが、やはり使い慣れたものの方が使いやすいです。

MP3の情報を取得するVBScript

2011/04/24

※ Windows 7にて実行。
MP3ファイルからタイトルやアーティスト名などを取得するには?[C#、VB] 参照

Option Explicit

Dim itm

With CreateObject("Shell.Application").Namespace("C:\Users\Public\Music\Sample Music")
  For Each itm In .Items
    If InStr(LCase(itm.Type), "mp3") Then
      WScript.Echo itm.Name & " , ファイルサイズ:" & .GetDetailsOf(itm, 1)
      WScript.Echo itm.Name & " , ファイルの種類:" & .GetDetailsOf(itm, 2)
      WScript.Echo itm.Name & " , 更新日時:" & .GetDetailsOf(itm, 3)
      WScript.Echo itm.Name & " , 作成日時:" & .GetDetailsOf(itm, 4)
      WScript.Echo itm.Name & " , アクセス日時:" & .GetDetailsOf(itm, 5)
      WScript.Echo itm.Name & " , 属性:" & .GetDetailsOf(itm, 6)
      WScript.Echo itm.Name & " , 所有者:" & .GetDetailsOf(itm, 10)
      WScript.Echo itm.Name & " , 参加アーティスト:" & .GetDetailsOf(itm, 13)
      WScript.Echo itm.Name & " , アルバム:" & .GetDetailsOf(itm, 14)
      WScript.Echo itm.Name & " , 年:" & .GetDetailsOf(itm, 15)
      WScript.Echo itm.Name & " , ジャンル:" & .GetDetailsOf(itm, 16)
      WScript.Echo itm.Name & " , 指揮者:" & .GetDetailsOf(itm, 17)
      WScript.Echo itm.Name & " , 評価:" & .GetDetailsOf(itm, 19)
      WScript.Echo itm.Name & " , 参加アーティスト:" & .GetDetailsOf(itm, 20)
      WScript.Echo itm.Name & " , タイトル:" & .GetDetailsOf(itm, 21)
      WScript.Echo itm.Name & " , コメント:" & .GetDetailsOf(itm, 24)
      WScript.Echo itm.Name & " , トラック番号:" & .GetDetailsOf(itm, 26)
      WScript.Echo itm.Name & " , 長さ:" & .GetDetailsOf(itm, 27)
      WScript.Echo itm.Name & " , ビット レート:" & .GetDetailsOf(itm, 28)
      WScript.Echo itm.Name & " , コンピューター:" & .GetDetailsOf(itm, 53)
      WScript.Echo itm.Name & " , 名前:" & .GetDetailsOf(itm, 155)
      WScript.Echo itm.Name & " , フォルダーのパス:" & .GetDetailsOf(itm, 177)
      WScript.Echo itm.Name & " , 項目の種類:" & .GetDetailsOf(itm, 182)
      WScript.Echo itm.Name & " , エンコード方式:" & .GetDetailsOf(itm, 193)
      WScript.Echo itm.Name & " , 発行元:" & .GetDetailsOf(itm, 195)
      WScript.Echo itm.Name & " , サブタイトル:" & .GetDetailsOf(itm, 196)
      WScript.Echo itm.Name & " , アルバムのアーティスト:" & .GetDetailsOf(itm, 217)
      WScript.Echo itm.Name & " , ビート数/分:" & .GetDetailsOf(itm, 219)
      WScript.Echo itm.Name & " , 作曲者:" & .GetDetailsOf(itm, 220)
      WScript.Echo itm.Name & " , イニシャル キー:" & .GetDetailsOf(itm, 221)
      WScript.Echo itm.Name & " , コンパイルの一部:" & .GetDetailsOf(itm, 222)
      WScript.Echo itm.Name & " , 雰囲気:" & .GetDetailsOf(itm, 223)
      WScript.Echo itm.Name & " , セットのパート:" & .GetDetailsOf(itm, 224)
      WScript.Echo itm.Name & " , サブタイトル:" & .GetDetailsOf(itm, 254)
      WScript.Echo itm.Name & " , 共有ユーザー:" & .GetDetailsOf(itm, 268)
    End If
  Next
End With

ウィンドウの切り替えを実行するVBScript

2011/04/24

※ Vista以降限定

CreateObject("Shell.Application").WindowSwitcher()