SSブログ

Excel2000 VBA So-netブログの記事管理の表データーを利用する [Excel2000 VBA独習]

Excel2000 VBA So-netブログの記事管理の表データーを利用する

追記 2011/05/18
Excelの区切り位置の設定で、タブ区切りを有効にしないとso-netブログからコピー貼り付けが巧くいかない

Sub sonetblog_kaiseki()

'so-netBlogの管理 (取り合えず出来たバージョン)
'so-netBlogの記事管理ページから「記事一覧」の表部分をコピーし、シートに貼り付ける(右クリック形式を選択して貼り付ける、テキスト形式で)
'表示件数を50(最大)にし、各ページをコピーし貼り付ける
'貼り付けて作成したデーターをシート(管理sheet2)にマクロで整形した形にする
'利用方法
'並び替え(ソート)などしてアクセス数順などを調べる
'処理に時間が掛かるので、チューニングが必要(後日する予定、配列に読み込み、配列から書き出す)スキルがないから無理かも

Dim i As Integer                'for ループ用カウンタ
Dim j As Integer                'シートdata_1の行番号
Dim k As Integer                'シート管理の行番号
Dim moji_count As Integer       '日時の文字数を調べる時のカウンター
Dim moji_suu As Integer         '日時の文字数
Dim title As String             'タイトル
Dim my_category As String       'カテゴリー
Dim viwe As Double              '閲覧数
Dim nice As Integer             'nice数
Dim CMT As Integer              'コメント数
Dim TB As Integer               'トラックバック数
Dim kiji_date As String         '記事作成日時
Dim jyoutai As String           '状態状況
Dim kiji_date_seikei As String  '記事作成日

Application.ScreenUpdating=False '画面更新の抑制 マクロの高速実行化
 

Sheets("data_1").Select      'ブログ管理からコピー貼り付けで作成したシート
last_row = Cells(Rows.Count, "C").End(xlUp).Row '記入されている最終行をしらべる
k = 3                        ’シート管理の行3 (記入初期行位置)
For i = 3 To last_row Step 7          ’7行毎
   Sheets("data_1").Select
    Range(Cells(i, "B"), Cells(i, "K")).Copy
    Sheets("管理").Select
    Cells(k, "B").Select
    ActiveSheet.Paste
    Sheets("data_1").Select
    j = i + 1                        'B3から+1してB4を選択
   nice = Cells(j, "B").Value  'niceの数を調べる
    j = i + 3                                                      'B3から+3してB6を選択
    CMT = Cells(j, "B").Value   'CMT数を調べる
    j = i + 5                                                     'B3から+5してB8を選択
    TB = Cells(j, "B").Value    'TBを調べる
    j = i + 6                                                    'B3から+6してC9を選択
    kiji_date = Cells(j, "C").Value '記事作成日を調べる(2011/2/15 11:19)
   
    '読み込んだ記事作成日時を日付のみにする
    moji_suu = Len(kiji_date)       '文字数を調べる
        For moji_count = 1 To moji_suu
            moji = Mid(kiji_date, moji_count, 1)        '記事作成日時から一文字づつ取り出す
            If moji = " " Then Exit For       'moji_count = moji_suu    'スペースならforループか抜け出す
            kiji_date_seikei = kiji_date_seikei + moji  '新しい日付を作成
        Next moji_count
   
    Sheets("管理").Select       'シート管理を選択して記入
   
    Cells(k, "G") = CMT         'CMTタブに記入
    Cells(k, "F") = nice        'niceタブに記入
    Cells(k, "H") = TB          'TBタブに記入
    Cells(k, "B") = kiji_date_seikei  '記事作成日を記入
    k = k + 1
    j = 0
    kiji_date_seikei = ""       '作成した日付を空にする
Next i
 Application.ScreenUpdating=True '抑制の解除      
End Sub

管理ページでコピー

 excel_VBA_sonetblog_03.jpg

excelに貼り付ける、この時右クリック「形式を選択して貼り付ける」 を選択し貼り付ける形式をテキストにする
シート名 data_1

excel_VBA_sonetblog_02.jpg

 シート名 管理

excel_VBA_sonetblog_01.jpg


CSVファイルで提供してくれると、もっと簡単に管理出来るけどな~・・・・

追記

Sub sonetBlog()
'so-netブログの記事管理、記事一覧を手動でコピーしエクセルに貼り付ける(テキスト形式で)。
'(記事数分表示を50件にする)
'貼り付けたデータから1記事の範囲を(空白を含む)を配列に読み込む
'他のシートに配列から必要な項目を記事数分書き込む
'以前のマクロより配列を利用したので10倍早い
'
Dim last_row, kiji_cont, kiji_row As Long
Dim i, j As Long
Dim data(1000, 27), c As Variant  'data(kiji番号,data・・・・)

'シート選択(コピー貼り付けたデータのシート)
    Sheets("data_1").Select
'管理ページからコピーしシートに貼り付けた最終行を調べる
    last_row = Range("C65536").End(xlUp).Row
'記事数を調べる1記事当り7行、スタート行3行目
    kiji_cont = (last_row - 2) / 7
'記事の数だけループ
    For i = 1 To kiji_cont
        j = 0
    '記事の位置(行)
        kiji_row = Cells(i * 7 - 7 + 3, "B").Row
    '配列に格納
        For Each c In Range(Cells(kiji_row, "B"), Cells(kiji_row + 6, "E"))
            data(i, j) = c
            'Debug.Print data(i, j)
            j = j + 1
        Next c
    Next i
   
'シート(管理)に書き込む
    Sheets("管理").Select
    For i = 1 To kiji_cont                      'i 記事番号
    '書き込む行
        kiji_row = i + 2                        '3行目から
            Cells(kiji_row, "B") = data(i, 25) '日付
            Cells(kiji_row, "C") = data(i, 1)  '記事タイトル
            Cells(kiji_row, "D") = data(i, 2)  'マイカテゴリー
            Cells(kiji_row, "E") = data(i, 3)  '閲覧数
            Cells(kiji_row, "F") = data(i, 4)   'nice
            Cells(kiji_row, "G") = data(i, 12)  'コメント
            Cells(kiji_row, "H") = data(i, 20)  'TB
Next i
End Sub
 

 

 

 

 


タグ:So-netブログ
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。