CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

【VBA】like演算子

こんにちは

 

引越しのを終えてネット回線が繋がるまでSoftBank光で対応してますが、これは遅いw

彼女とのビデオチャットもできやしないorz

 

Like演算子とは

今までIf文やWhile文で条件を設定すると、条件に完全に一致しないとTrueになりませんんでした。Like演算子を使用することでもっと条件を緩めることができます。

 If 条件 Like ”*ブログ” Then

のように使用します

一致の種類 パターン 一致例 一致なし 解説
複数の文字 a*a abca,a12a abc  *の所には複数の文字や数字、記号を代入することができます。
  *a* bac,1a2 abc  上と同様に前後でも文字を代入できます
特殊文字 a[*]a a*a aaa  この場合は*しか代入されません
1つの文字 a?a aaa,a1a abcd  この?には1文字しか代入されません
1つの数字 a#a a1a,a0a aaa  この#には数字1文字しか代入されません
文字の範囲 [a-z] a,b,z 1,2  ここにはa~zが入ります
範囲外 [!a-z] 9,$,%  a,b,c  a~z以外の文字が入ります
非数字 [!0-9] a,b,c  1,2,9  数字以外の文字が入ります

 

今回はここで切らせていただきます。

明日は使用例を書けたらなぁと

【リベンジ】Seleniumで生放送の累計来場者数を増やす

こんにちは

 

今回は前回のリベンジです。

色々と試行錯誤してようやくできましたので見ていってくださいw

 

プログラム

開いているIEのURLを取得してそのページをFor文の回数繰り返すといったものです。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Function getIE()
    Dim ie As InternetExplorer
    Dim sh As Object
    Dim Win As Object
    Dim document_title As String
    Set sh = CreateObject("Shell.Application")
    For Each Win In sh.Windows
        document_title = ""
        On Error Resume Next
        document_title = Win.document.title
        On Error GoTo 0
        Set ie = Win
    Next
    Set getIE = ie
End Function

 

Public Sub selenium_test1()
    Dim driver As New SeleniumWrapper.WebDriver
    Dim ie As InternetExplorer
    Set ie = getIE()

    For i = 1 To 10
        driver.Start "chrome", ie.document.URL
        driver.get ("/")

        driver.stop

        Sleep 5000
    Next i
End Sub

 Public  Sub selenium_test1() のところを見ていきます。

1行目:selenium_test1の開始

2行目:SeleniumWrapper.WebDriverのオブジェクトとしてdriver を宣言

3行目:IEのURLを引用するためIEを変数宣言

4行目:開いているIEを取得

5行目:なし

6行目:For文で処理を10回繰り返す

7行目:ChromeIEのURLをセット

8行目:7行目のURLを開く

9行目:Chromeを閉じる

10行目:5秒間スリープ

11行目:変数iを返す

12行目:プロシージャの終了

 

実際の効果は

f:id:takataka2743:20180921233621j:plain

こんな感じですね

1回やるのに5秒+開くまでの待機時間が必要ですが、自動化できるという点ではいいものかと。

ちなみに3秒待機で実行してみたところ、累計来場者数は増えたり増えなかったりと安定しませんでした。なぜ?

 

 

やっとやりたかったことができて少しすっきりしました。

明日は土曜日ですが、引越しと仕事があるため更新できなかったらごめんなさい

【VBA】Seleniumのインストール

こんにちは

 

前回の失敗の原因はまずブラウザがIEでは使用できないというところですね。

そこでIE以外のブラウザを使用してみましょう。

 

探した結果Seleniumというものがあるそうです。

Seleniumってなに?

ブラウザでのテストを自動化するツールらしいです。

どこに行ってもこんな回答しかなかったw

これを使うことでChromeFirefoxを操作することができるようです。

 

このSeleniumVBAでできるようにしたものをSeleniumVBAと呼ぶようです。

 

Seleniumのインストール

1.まずSeleniumをインストールしましょう。

ここをクリック

 

2.最新のバージョンをダウンロードする

f:id:takataka2743:20180920222635p:plain

 

3.保存されたファイルをインストールする

 

4.VBEの参照設定で[SeleniumWrapper Type Library]が追加されていることを確認する

f:id:takataka2743:20180920223116p:plain

 

問題無ければチェックして[OK]をクリック

 

Seleniumのインストールは以上です。

 

次にchromedriverをダウンロード

VBAChromeを扱えるようにするためにドライバーをインストールしましょう。

1ドライバをダウンロードする

 下のサイトに移動します。

sites.google.com

赤枠で囲ったところをクリック

f:id:takataka2743:20180920224219p:plain

クリックすると似たようなページが出ますが、ここでも赤枠をクリック

f:id:takataka2743:20180920224341p:plain

 

このページでchromedriver_win32.zipをダウンロードします。

OSごとにあったものを選んでください。

f:id:takataka2743:20180920224516p:plain

 

ダウンロードしたファイルを解凍して先ほどSeleniumWrapperをインストールしたフォルダに移動します。

デフォルトはC:\Program Files (x86)\SeleniumWrapperなのかな?

 

インストールは以上で終了です。

ここから先は自分も勉強しながら行います。

もし間違っていたら指摘していただけるとありがたいです。

【失敗】動画配信サイトの閲覧者数を上げる

こんにちは

 

今回は生放送サイトの累計閲覧者数を上げる方法を考えてみました。

ちなみにこの方法は失敗したため別の方法を考える必要がありますw

 

生放送サイトの累計来場者数を上げるには

そもそもの問題ですよね。

累計来場者数は基本的に配信画面が開かれた回数ですね。

なので生放送のサイトを何度か更新をすることで累計来場者数は増えると予想されます。

累計来場者数が増えることで、ほかの人の目に留まりやすくなります。

 

どうしたらよいのか

これは機能お話しした.Refreshを使用します。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Function getIE()
Dim ie As InternetExplorer
Dim sh As Object
Dim win As Object
Dim document_title As String
Set sh = CreateObject("Shell.Application")
For Each win In sh.Windows
document_title = ""
On Error Resume Next
document_title = win.document.title
On Error GoTo 0
Set ie = win
Next
Set getIE = ie
End Function
Private Sub 更新()
Dim ie As InternetExplorer
Set ie = getIE()
Dim htdoc As HTMLDocument
If ie Is Nothing Then Exit Sub

Dim i As Long
For i = 1 To 10
ie.Refresh
Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Sleep 3000
Next i

End Sub

 今まで説明した内容を組み合わせただけなので今回は説明を省きます。

内容的には今開いているIEのページを10回更新する処理です。

 

実際にやってみた

まずはIEツイキャスを開いてと・・・ん?

f:id:takataka2743:20180919214411p:plain

どうやらIEツイキャスは未対応なようですor2

 

じゃあニコ生は・・・

f:id:takataka2743:20180919214707p:plain

 

うん、出鼻をくじかれてしまった・・・

どうするかまた考えます

【VBA】IEの更新や戻るボタンの処理

こんにちは

 

今回はIEの更新や戻るボタンについて調べました。

IEで操作ができるならVBAでも操作が可能なはず!

 

調べてみた結果プロパティひとつで簡単に処理できるようで

意外とあっさりでした。

 

IEの更新

InternetExplorerオブジェクト.Refresh

 

これだけですね。

更新する場合はこの後にページが開き終わるまで待つ必要があります。

 

戻るボタン

InternetExplorerオブジェクト.GoBack

戻るのもこれだけで済みますね。

これもページを開き終わるまで待つ必要がありますね。

 

URLの取得

InternetExplorerオブジェクト.LocationURL

もしくは

InternetExplorerオブジェクト.document.URL

で取得できるようです。

 

今回も短いですがこの辺で

【VBA】水平揃え垂直揃え

こんにちは

涼しくなってきましたね。

 

今日は水平揃えと垂直揃えのお話です。

使うことはあまり無いんじゃないかな・・・

とはいえまとめさせていただきますよ。

 

水平揃え

水平はHorizontalAlignmentプロパティを使用します。

Horizontalは水平な、Alignmentは直線にするという意味です。

つまり水平に揃えるという意味ですかね。

 Range("A:A").HorizontalAlignment = xlGeneral

このような形で使用します。

効果
xlGeneral 標準(デフォルトの状態)
xlLeft 左揃え
xlCenter 中央ぞろえ
xlRight 右揃え

 

垂直揃え

では垂直揃えも見ていきましょう。

垂直はVerticalAlignmentプロパティを使用します。

Verticalは垂直のという意味ですね。

水平揃え同様

Range("A:A").VerticalAlignment = xlTop

と使用します。

効果
xlTop 上揃え
xlCenter 中央揃え
xlBottom 下揃え

 

 あらかじめセルに設定しておけば使うことはほぼ無いと思うのですが、水平揃え・垂直揃えの説明でした。

【VBA】フォントプロパティでフォントを操作する

こんにちは

今回はフォントを操作してみましょう。

フォントプロパティを使えばフォントの色や大きさ、太文字など様々な操作が行えます。

 

よく使うもの

フォントの色変更

フォントの色はインデックス番号で指定する方法、RGBで指定する方法、16進数で指定する方法があります。

インデックス番号は以下のとおりです。

1~56まであるそうです。

.Font.ColorIndex=1のように使用します。

f:id:takataka2743:20180916144900p:plain

 

次にRGBを使用して指定します。

.Font.ColorIndex=RGB(赤の数値,緑の数値,青の数値)のように使用します。

[その他の色]から[色の設定]の[色の設定]を開きRGBの値を確認することができます。

f:id:takataka2743:20180916145355p:plain

f:id:takataka2743:20180916145410p:plain

 

最後に16進数で表す方法ですが、自分はあまり使いませんね。

.Font.Color = &HFFFFFF のように使うらしいのですが詳しくないため省略とさせてください。

 

フォントの設定変更

基本的にTrue/Falseで有効/無効を切り替えます

フォントの太文字の変更

Range("A1").Font.Bold = True
Range("A1").Font.Bold = False

 

斜体の変更

Range("A1").Font.Italic = True
Range("A1").Font.Italic = False

 

取り消し線の変更

Range("A1").Font.Strikethrough = True
Range("A1").Font.Strikethrough = False

 

下線の変更

Range("A1").Font.Underline = True
Range("A1").Font.Underline = False