以前に書いた投稿が結構好評だったので 2008年 G/W 明け第一弾としてまったやってみましょうかね。
前はこんな感じで書きました。当時 33 件。 【IIS7】 そろそろいいことばかりでなく、現実的なことも重要か
今日同じ検索をしたところ、103 件に増えてます。全部はできないなこりゃ。。。
ということで、綺麗なリストを機械的に作るところからやりますかね。
手順1:まず、サポート技術情報ページで ”Internet Information Services 7.0" で検索します。 http://support.microsoft.com/ へ行く。 私は 英語 のリストが欲しいので、右で英語をドロップダウンする。 基本検索 ボタンをクリックする。 すべてを表示する をクリックする。(1ページに表示した方が Excel に持っていきやすい)
手順2:Excel の準備をします。 Excel 2007 を開き、適当な名前をつけて Excel マクロ有効ブックとして保存する。 ・・・私は IIS7_KB.xlsm としました。(●^o^●) Sheet1 の名前を Data に変えます。 あと、マクロを使うので「開発」タブを表示しておく。 ・・・これは左上の Office ボタン、Excelのオプション の順にクリックするとチェックボックスがある。
手順3:リストを作ります。 まず、手順1の検索結果ページで全KBのリストをコピーして、手順2で作った Data のシートに貼ります。 このままじゃ縦に並んでて使いにくいなぁ 行と列を入れ替えてどんどん手で別のシートにコピーしてもいいけど、芸がないですわね。。。 手順4:マクロ作っちゃえ。 開発タブから Visual Basic をクリックする。 ツリーから ThisWorkBook をダブルクリックする。 適当な関数名をつける。面倒だったら Sub Main とでもする。Enter すると勝手に End Sub が入る。 さて、ここで通常マクロと格闘するところだが、、、今日はプレゼントしませう。 下記を貼り付けます。
Sub Main()
Dim nsheet As Worksheet Dim osheet As Worksheet Application.DisplayAlerts = False For Each sh In ThisWorkbook.Sheets If sh.Name = "kblist" Then sh.Delete Exit For End If Next
Application.DisplayAlerts = True
Set nsheet = ThisWorkbook.Sheets.Add nsheet.Name = "kblist" y2 = 1 nsheet.Cells(y2, 1).Value = "タイトル" nsheet.Cells(y2, 2).Value = "詳細" nsheet.Cells(y2, 3).Value = "URL" nsheet.Cells(y2, 4).Value = "№" y2 = y2 + 1 Set osheet = ThisWorkbook.Sheets("Data") y1 = 1 Do While osheet.Cells(y1, 1).Value <> "" nsheet.Cells(y2, 1).Value = osheet.Cells(y1, 1).Value nsheet.Cells(y2, 2).Value = osheet.Cells(y1 + 1, 1).Value nsheet.Cells(y2, 3).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=osheet.Cells(y1 + 2, 1).Value, TextToDisplay:=osheet.Cells(y1 + 2, 1).Value
nsheet.Cells(y2, 4).Value = Mid(osheet.Cells(y1 + 2, 1).Value, Len(osheet.Cells(y1 + 2, 1).Value) - 11, 6) y2 = y2 + 1 y1 = y1 + 3 Loop ActiveSheet.ListObjects.Add(xlSrcRange, Range(nsheet.Cells(1, 1), ActiveCell.SpecialCells(xlLastCell)), , xlYes).Name = "テーブル1" ActiveSheet.ListObjects("テーブル1").TableStyle = "TableStyleMedium15" Columns("A:C").WrapText = True Columns("A:A").ColumnWidth = 52.5 Columns("B:B").ColumnWidth = 75.5 Columns("C:C").ColumnWidth = 42.75
Cells.Select Cells.EntireRow.AutoFit ActiveWorkbook.Worksheets("kblist").ListObjects("テーブル1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("kblist").ListObjects("テーブル1").Sort.SortFields.Add _ Key:=Range("テーブル1[№]"), SortOn:=xlSortOnValues, Order:=xlAscending, _ DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("kblist").ListObjects("テーブル1").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With MsgBox "Done!"
End Sub
これで完了なので、ファイルを上書き保存する。
手順5:マクロを実行します。 Visual Basic 画面を閉じて、開発タブ、リボンから マクロ をクリックする。 表示されたダイアログで ThisWorkbook.Main が選択されていることを確認して 実行 をクリックする。 ・・・名前を別のものにしたら当然それを選択してくださいね。kblist というシートができますので。。。 最後にメッセージボックスを表示するようにしているので Done! と表示されたら終わり。OKをクリックする。
という感じで IIS7.0 の英語サポート技術情報の綺麗なリストができましたとさ。(*^^)v
書式とか並び順は少しいじれば直せますよね。マクロの記録で変えたいのを手操作で実施して記録すればどの変数にすればいいかわかりますので。マクロの記録を既定で実行した場合には Visual Basic 内の標準モジュールとして記録されるので新しくできた Module1 とかをダブルクリックしてください。そこに記録されたコードがあります。
例えば、緑のテーブル書式にしたい場合にはこんなのが記録されるでしょう。
Range("B2").Select ActiveSheet.ListObjects("テーブル1").TableStyle = "TableStyleDark4"
元のマクロでは TableStyleMedium15 にするようになっているのでそこの値を TableStyleDark4 で置き換えます。
こういうのって意外とどこにも書いてないので自称 エクセラーとしては書いてみようと思ったのでありました。。。 ではでは。(@^^)/~~~
これを日本語に翻訳するのは時間があったらやりますぅ。
当然 日本語のリストでもやりたいでしょうからちょっと追記しておこうかな。
同じことを日本語でやると2つおかしくなります。
- URLの位置が違うので№が正しく編集できません。
- 942074 の KB が説明文を正しく今 表示しないのでエラーになる。
ということを踏まえておくと、
Data シートでまず 942074 の2行目を手で挿入する。
(942074)とただ入れると負の値としてExcelが認識するので、'(942074) と入力しませう。
次に、マクロの修正ですが以下のように -9 にすれば。
Mid(osheet.Cells(y1 + 2, 1).Value, Len(osheet.Cells(y1 + 2, 1).Value) - 9, 6)
ということでマイクロソフトの技術情報をいつもリストされている方にちょっとしたアドバイスでした。。。