三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


はてなブログ 本文連続置換更新処理にチャレンジ 結合テスト

単体で動作確認ができたので、
結合処理を行ってみます

下記、いつもの酔っ払い解説動画です。
https://youtu.be/Ymk_TSO7dQk
youtu.be

結合処理中のエラー、不具合

面白おかしく説明しようと
がんばってみましたが、
うまく料理できませんでした。

失敗やエラーのシナリオなど、うまく考えないとなぁ。

ただ単体のコードをつなげただけの意味ない動画ですが、
よろしくお願いします。

テスト作成したコード

Option Explicit

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'IEオブジェクトを受け取り、表示を待つ
Sub IE_WAIT(objIE As Object)

    Sleep 250  '0.25秒待つ

    'ページの表示完了を待ちます。
    While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        'DoEvents  '重いので嫌いな人居るけど。
        Sleep 200  '0.2秒待つ
    Wend

    Sleep 250  '0.25秒待つ

End Sub

'-----------
Sub test結合_はてなブログ記事内容置換()

'手作業でやると
'1.ダッシュボードから記事の管理へ
'記事の管理画面を開き
'https://blog.hatena.ne.jp/ユーザID/ブログID.hatenablog.com/entries

'IEの起動
    Dim objIE As Object '変数を定義します。
    Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
    objIE.Visible = True      '可視、Trueで見えるようにします。
    
    objIE.Top = 0
    objIE.Left = 0
    
Dim i As Integer

For i = 1 To 10 '最高10ページ単位で処理する

'処理したいページを表示します。
    objIE.Navigate "https://blog.hatena.ne.jp/ユーザID/ブログID.hatenablog.com/entries"
    Call IE_WAIT(objIE)   '終了待つ
    
'2.指定文字で検索する
'movie:w560 で 検索して
'該当の文字列を含んだ記事を探す

    '検索データをセットする
    objIE.document.all("q").Value = "movie:w560"
    'objIE.document.all("q").Value = "movie:w999"  'エラーのテスト
    
    '検索ボタンを押す
    'INPUTのタグを探す
    Dim objINPUT As Object
    For Each objINPUT In objIE.document.getElementsByTagName("input")
        Debug.Print objINPUT.Value
        '検索ボタンを見つけて押す
        If objINPUT.Value = "検索" Then
            objINPUT.Click  'クリック処理
            DoEvents
            Exit For
        End If
    Next
    
    Call IE_WAIT(objIE)   '検索終了待つ
    
'3.編集画面を開く
'編集画面を開く
'※タイトルなどのリンクを押し、次の編集画面へ
    
    '編集処理を押す
    'INPUTのタグを探す
    Dim objA As Object
    Dim Error_Flg As Integer
    
    Error_Flg = 1  '初期値をエラー 1:見つからないをセット
    For Each objA In objIE.document.getElementsByTagName("a")
        Debug.Print objA.href
        'リンク先URL entry=を見つけて押す
        If InStr(objA.href, "entry=") > 0 Then
            objA.Click     'クリック処理
            Error_Flg = 0  '処理データが見つかったので、フラグクリア
            Exit For
        End If
    Next
    
    '修正対象記事があるか?エラーチェック
    If Error_Flg = 1 Then
        'MsgBox "修正記事が見つかりません"
        Exit For  'ループを抜ける
    End If
    
    Call IE_WAIT(objIE)   '編集画面の起動を終了待つ

'4.本文を書き換える
'本文の
'movie:w560
'を
':embed:cite
'に書き換える
    'データをセットする
    objIE.document.all("body").Value = Replace(objIE.document.all("body").Value, ":movie:w560", ":embed:cite")
    DoEvents
    
'5.更新ボタンを押す
    '更新ボタンを押す
    objIE.document.all("submit-button").Click '更新ボタンをクリック
    DoEvents
    
    Call IE_WAIT(objIE)   '編集画面の起動を終了待つ

Next i

    MsgBox "更新終了"


End Sub

関連記事は
やりたいこと → https://www.youtube.com/watch?v=QtDKAXRZuno
www.youtube.com

ブログ本文置換 → https://ken3code.hatenablog.jp/entry/2018/06/24/154957
ken3code.hatenablog.jp

ブログ記事検索 → https://ken3code.hatenablog.jp/entry/2018/06/26/060419
ken3code.hatenablog.jp

上記も合わせてみてください。


2020/05/21 追記(※アクセス数が増えたので、何かなぁと思ったら・・・ぉぃぉぃ)

www.mypath-as-variant.com
より

三流君のコードは以下のようになっていたのですが

↓--------------------------------------------------

For Each objINPUT In objIE.document.getElementsByTagName("input")
If objINPUT.Value = "検索" Then
objINPUT.Click 'クリック処理

↑--------------------------------------------------

現状のはてなの検索ボタンを押すには、

↑とても、ありがたいですね。みなさんも、いろいろとアレンジして使ってみてください。

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)