三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



Google検索オプション &tbs=cdrで範囲検索 今年も自腹営業のクリスマスケーキが捨てられるのか・・・

クリスマスケーキの季節ですね。
昔書いたコンビニの記事
三流君コンビニ:クリスマスケーキ、予約商品の話
三流君コンビニ:単価の高い商品を売れと言われるが・・・

コンビニ クリスマスケーキ 自腹営業の
問い合わせが来たので、
※中身と回答は いつものXXXさんにしようと思ったが
 暗い話になってしまったので、今回は検索ネタだけです・・・ぉぃぉぃ

ケーキ 捨てた

キーワードにgoogleで検索する。

去年の同時期が知りたかったので、
検索ツールから 期間指定で 2015/12/24 から 2015/12/28を条件にしてみた。
https://www.google.co.jp/search?q=%E3%82%B1%E3%83%BC%E3%82%AD+%E6%8D%A8%E3%81%A6%E3%81%9F&hl=ja&tbs=cdr%3A1%2Ccd_min%3A2015%2F12%2F24%2Ccd_max%3A2015%2F12%2F28&tbm=

↑去年も、自腹で営業・・・ノルマアリ書き込みがチラホラ・・・

最近は、ブラックバイトなど、
炎上が怖いのでムチャしていないとは思いますが
私のような弱小サイトにも書き込みがあったので、
またネットニュースになったりするのかなぁ。
※画像とか投稿IDを捨てアカにするなど注意しないと、
 特定されて大変なことになるよ・・とは言っといたけど、
 食べ物のケーキ投げ捨て画像や動画が世の中にでなきゃいいけど・・・

おっと、そんなんで終わったら、システム屋らしくないか、
検索URLをみると、

https://www.google.co.jp/search?q=%E3%82%B1%E3%83%BC%E3%82%AD+%E6%8D%A8%E3%81%A6%E3%81%9F&hl=ja&tbs=cdr%3A1%2Ccd_min%3A2015%2F12%2F24%2Ccd_max%3A2015%2F12%2F28&tbm=

分解すると

https://www.google.co.jp/search?
q=%E3%82%B1%E3%83%BC%E3%82%AD+%E6%8D%A8%E3%81%A6%E3%81%9F
&hl=ja
&tbs=cdr%3A1%2Ccd_min%3A2015%2F12%2F24%2Ccd_max%3A2015%2F12%2F28
&tbm=

q=は、検索文字ですね
期間指定は、tbs=ですね。
tbs=cdr%3A1%2Ccd_min%3A2015%2F12%2F24%2Ccd_max%3A2015%2F12%2F28
%3Aは :
%2Cは ,
%2Fは /
デコードすると
tbs=cdr:1,cd_min:2015/12/24,cd_max:2015/12/28
かな

こんな感じで、googleの検索結果URLからパラメーターを探ることができます。

今年は無いとは思いますが、
ケーキ 捨てた
q=%E3%82%B1%E3%83%BC%E3%82%AD+%E6%8D%A8%E3%81%A6%E3%81%9F
検索範囲 2016/12/24~2016/12/28
&tbs=cdr%3A1%2Ccd_min%3A2016%2F12%2F24%2Ccd_max%3A2016%2F12%2F28
で検索用のURLを作成してみます。

↓実行すると・・・
https://www.google.co.jp/search?q=%E3%82%B1%E3%83%BC%E3%82%AD+%E6%8D%A8%E3%81%A6%E3%81%9F&tbs=cdr%3A1%2Ccd_min%3A2016%2F12%2F24%2Ccd_max%3A2016%2F12%2F28
↑検索にヒットしないことを祈りつつ、、、
範囲指定は
tbs=cdr:1,cd_min:2015/12/24,cd_max:2015/12/28
試してみてください。

残業予定のみなさんへ???Windows10 Update アクティブ時間の変更

残業予定の人は、
設定 の Windows Updateから
アクティブ時間の変更で、時間を確認してみてください。

f:id:ken3memo:20161214163658j:plain

PC前でほっと一息、
ぼーっとしてて、
17時に突然 更新が適用されないために、
アクティブ時間※再起動禁止時間を確認してください。


※平和な 九時五時の人は、あまり関係ないけど。
※※まぁ平和な人は、十分前の16:50にPCの電源落としているかな?

以上、30分前のお知らせでした。 ぉぃぉぃ・・・・

f:id:ken3memo:20161214163730j:plain

XXXXXさんへ VBA IE操作 1ページに複数のテーブルがある場合

下記の質問をいただきました。

>【質問】
>TABLEが一つならOKなのですが、複数あると手も足も出ません。
>複数あるときの処理を教えていただけないでしょうか。
>全てのTABLEデータを取り出したのですが・・・
>【現状コード】
>Set objTable = objIE.document.getElementsByTagName("table")(0)
>For i = 0 To objTable.Rows.Length - 1
>
> For j = 0 To objTable.Rows(i).Cells.Length - 1
>
> objTable.Rows(i).Cells(j).innerText
> aa = objTable.Rows(i).Cells(j).innerText
> Sheets("情報").Cells(i + 1, j + 1) = aa
> Next j
>
>Next i

テーブルの指定が
Set objTable = objIE.document.getElementsByTagName("table")(0)

.getElementsByTagName("table")(0)
と、
(0)で0番目の指定、
頭を固定で取っているので、
これを全てのテーブルで回すように変更すれば、、、

.getElementsByTagName("table")(0)

.getElementsByTagName("table")
にしてループで使います。

テーブルの数が、
.Length
でわかるので、
外側にテーブル単位のループを追加する、
そんな処置をしてみます。


Set objTABLEs = objIE.document.getElementsByTagName("table")

テーブルを集めて、
For n = 0 To objTABLEs.Length - 1
のループを作り、
objTABLEs(テーブル).Rows(行).Cells(列).innerText
みたいに使った話

操作・解説動画
www.youtube.com
https://www.youtube.com/watch?v=TqHB16Mj8tI
↑失敗操作、デバッグ風景を笑ってくださいね。ぉぃぉぃ。

#VBA #IE操作 #TABLE
#デバッグ風景
#getElementsByTagName
#Length

テストで使用したソースファイル

http://ie.vba-ken3.jp/test/20161101j1j2.html
↑テストの表 ここから 下記のコードでデータを抜く・・・

Option Explicit

Sub le_test20161206_複数テーブルを取得()

    'IE起動
    Dim objIE    As Object  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)
    
    '.Navigate で 指定した文字列のURLを開く
    objIE.Navigate "http://ie.vba-ken3.jp/test/20161101j1j2.html"

    '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
         DoEvents  '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
         DoEvents  '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
    
    'テーブルを探す
    'タグの取出しが、.getElementsByTagName("TABLE")で 可能なので、
    Dim objTABLEs As Object 'TABLEを複数 格納用
    
    'TABLEタグを複数取り出す
    Set objTABLEs = objIE.document.getElementsByTagName("table")

    'まず、書き込み先シートに切り替え、データをクリアする
    Sheets("DATA").Select    'シートを切り替える
    Cells.Delete Shift:=xlUp 'シート全体を削除する
    Range("A1").Select       '先頭A1を選択する、
    
    '表をDATAシートに書き出す
    Dim j As Integer  '列の管理
    Dim i As Integer  '行の管理
    Dim n As Integer  'TABLEの管理
    Dim yy As Integer 'セットする行
    Dim aa As String  '一時保管用
    
  
  'Webの表をシートへ転記(代入する)
  yy = 1  'セットする位置を初期化
  
  For n = 0 To objTABLEs.Length - 1  'TABLEの数ループ
    
    For i = 0 To objTABLEs(n).Rows.Length - 1 '行の数 ループ
    
       For j = 0 To objTABLEs(n).Rows(i).Cells.Length - 1  '列のループ
            'objTABLEs(テーブル).Rows(行).Cells(列).テキスト値
            aa = objTABLEs(n).Rows(i).Cells(j).innerText
            Sheets("DATA").Cells(yy, j + 1) = aa
       Next j
       
       yy = yy + 1   'セット位置 行を増やす
    
    Next i
    
  Next n
  
    '終了処理
    objIE.Quit  'IEを閉じる
    Set objIE = Nothing   '変数の後始末
    
End Sub

おまけ・蛇足 TRで集めて処理してみた

Sub le_test20161206_TRタグを集めてみた()

    'IE起動
    Dim objIE    As Object  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)
    
    '.Navigate で 指定した文字列のURLを開く
    objIE.Navigate "http://ie.vba-ken3.jp/test/20161101j1j2.html"

    '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
    Do While objIE.Busy = True
         DoEvents  '特に何もしないで.Busyの状態が変わるまで待つ
    Loop
    Do While objIE.ReadyState <> 4
         DoEvents  '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
    Loop
    
    'TR 行を探す
    'タグの取出しが、.getElementsByTagName("TR")で 可能なので、
    Dim objTR As Object 'TR タグを複数 格納用
    
    'TRタグを複数取り出す
    Set objTR = objIE.document.getElementsByTagName("TR")

    'まず、書き込み先シートに切り替え、データをクリアする
    Sheets("DATA").Select    'シートを切り替える
    Cells.Delete Shift:=xlUp 'シート全体を削除する
    Range("A1").Select       '先頭A1を選択する、
    
    '表をDATAシートに書き出す
    Dim j As Integer  '列の管理
    Dim i As Integer  '行の管理
    Dim yy As Integer 'セットする行
    Dim aa As String  '一時保管用
    
  
  'Webの表をシートへ転記(代入する)
  yy = 1  'セットする位置を初期化
  
    For i = 0 To objTR.Length - 1 '行の数 ループ
    
       For j = 0 To objTR(i).Cells.Length - 1  '列のループ
            'objTR(行).Cells(列).テキスト値
            aa = objTR(i).Cells(j).innerText
            Sheets("DATA").Cells(yy, j + 1) = aa
       Next j
       
       yy = yy + 1   'セット位置 行を増やす
    
    Next i
    
    '終了処理
    objIE.Quit  'IEを閉じる
    Set objIE = Nothing   '変数の後始末
    
End Sub



下記、冒頭と同じ 解説動画です
www.youtube.com
https://www.youtube.com/watch?v=TqHB16Mj8tI
↑失敗操作、デバッグ風景を笑ってくださいね。ぉぃぉぃ。