Hiroshi Okunushi's Blog ☆ミ| IIS PHP etc.

IIS7, PHP on IIS を中心とした情報発信ブログです。

Blogs

【IIS7】 サポート技術情報をリストアップしてみる

  • Comments 1
  • Likes

以前に書いた投稿が結構好評だったので 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

image

書式とか並び順は少しいじれば直せますよね。マクロの記録で変えたいのを手操作で実施して記録すればどの変数にすればいいかわかりますので。マクロの記録を既定で実行した場合には Visual Basic 内の標準モジュールとして記録されるので新しくできた Module1 とかをダブルクリックしてください。そこに記録されたコードがあります。

例えば、緑のテーブル書式にしたい場合にはこんなのが記録されるでしょう。

Range("B2").Select
ActiveSheet.ListObjects("テーブル1").TableStyle = "TableStyleDark4"

元のマクロでは TableStyleMedium15 にするようになっているのでそこの値を TableStyleDark4 で置き換えます。

こういうのって意外とどこにも書いてないので自称 エクセラーとしては書いてみようと思ったのでありました。。。
ではでは。(@^^)/~~~

これを日本語に翻訳するのは時間があったらやりますぅ。

Comments
  • 当然 日本語のリストでもやりたいでしょうからちょっと追記しておこうかな。

    同じことを日本語でやると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)

    ということでマイクロソフトの技術情報をいつもリストされている方にちょっとしたアドバイスでした。。。

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment