VBAのIE(InternetExplorer)制御で役立つIEのクッキーを削除するする制御方法について解説しています。
今回は、IEのクッキー(cookies)を削除するサブルーチンについて解説していきます。
情報収集する場合は、節度あるアクセスを心がけますが、中にはチェックに引っかかって情報収集できないこともあります。
大半はIPアドレス変更でうまくいくのですが、クッキー(cookies)管理されている場合もあるので、その際のクッキー削除や定期的に削除したい場合に利用します。
それでは、IEのクッキー(cookies)を削除する制御方法について見ていきましょう。
Private Const S_OK = &H0
Private Const CSIDL_COOKIES = &H21
Private Const MAX_PATH = 260
Private Declare Function SHGetFolderPath Lib "shfolder" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
ByVal hToken As Long, ByVal dwFlags As Long, _
ByVal pszPath As String) As Long
Sub cookiesDel(Optional modeType As Integer = 0)
Dim cookieFolder As String
Dim retVal As Integer
Dim objSFO As Object
Dim cookieFile As Object
'クッキー保存フォルダパス取得
cookieFolder = String(MAX_PATH, vbNullChar)
retVal = SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, cookieFolder)
If retVal = S_OK Then
cookieFolder = Left(cookieFolder, InStr(1, cookieFolder, Chr(0)) - 1)
Set objSFO = CreateObject("Scripting.fileSystemObject")
label01:
For Each cookieFile In objSFO.GetFolder(cookieFolder).Files
'拡張子がtxtであればファイルを削除
If objSFO.GetExtensionName(cookieFile) = "txt" Then
cookieFile.Delete
End If
Next
End If
If InStr(cookieFolder, "Low") = 0 And modeType = 1 Then
cookieFolder = cookieFolder & "\Low"
GoTo label01
End If
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
Sub sample()
Call cookiesDel(1)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
こちらの引数は以下の1つです。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
modeType | Integer | 保護モードのクッキー削除の有無 | 0,1 | 0 | ● |
引数は任意項目となります。
「modeType」には、保護モードのクッキーも削除するかのチェックに利用するタイプを入力します。
保護モードのクッキーについては、後ほど説明します。
Private Const S_OK = &H0
Private Const CSIDL_COOKIES = &H21
Private Const MAX_PATH = 260
Private Declare Function SHGetFolderPath Lib "shfolder" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
ByVal hToken As Long, ByVal dwFlags As Long, _
ByVal pszPath As String) As Long
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは「SHGetFolderPath」のAPIを利用するための記述となります。
今回クッキーを削除するのですが、まずはクッキーが格納されているフォルダを取得する必要があります。クッキーが保存されているフォルダは特殊フォルダですので、特殊フォルダを取得する場合は「SHGetFolderPath」のAPIを利用します。特殊フォルダは、他にもデスクトップやお気に入り、マイドキュメントなどが挙げられます。
また、「SHGetFolderPath」の利用方法については、「SHGetFolderPath 関数を使用するには」を参照してください。
こちらに詳しく説明されています。
'クッキー保存フォルダパス取得
cookieFolder = String(MAX_PATH, vbNullChar)
retVal = SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, cookieFolder)
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは、クッキーが保存されているフォルダパスを取得しています。
フォルダパスが取得できた場合は、retValは0を返します。
If retVal = S_OK Then
cookieFolder = Left(cookieFolder, InStr(1, cookieFolder, Chr(0)) - 1)
Set objSFO = CreateObject("Scripting.fileSystemObject")
label01:
For Each cookieFile In objSFO.GetFolder(cookieFolder).Files
'拡張子がtxtであればファイルを削除
If objSFO.GetExtensionName(cookieFile) = "txt" Then
cookieFile.Delete
End If
Next
End If
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは、クッキー保存先が取得できた場合の処理です。
「FileSystemObjectオブジェクト」を利用して、クッキー保存フォルダ内のファイルを全て取得します。
そして、クッキーのファイルはテキストファイルですので、「GetExtensionNameメソッド」を利用して拡張子がtxtのファイルを削除しています。
ここまでが通常のクッキー削除方法ですが、冒頭で説明した保護モードのクッキー削除についても制御処理をしていきます。
まず保護モードについての説明ですが、Windows Vista以降のIE(InternetExplorer)では保護モードというものが導入されています。
保護モードについてDeveloper Networkでは「Microsoft Windows Vista では、Microsoft Internet Explorer 7 は保護モードで実行されます。権限を大幅に制限して Internet Explorer プロセスを実行することによって、攻撃からユーザーを保護します。 保護モードは、ユーザーのマシン上でのデータの書き込み、変更、破壊や、あるいは悪意のあるコードのインストールといった攻撃の可能性を大幅に低減します。」と説明されています。
簡単に説明すると、権限を制限して、悪意のある攻撃から守るためのモードです。
詳しく知りたい方は「保護モードの Internet Explorer の理解と機能」をご確認ください。
次の保護モードとクッキーが何に関係するかというと、通常モードと保護モードではクッキーの保存先が異なります。
ちなみに保存先は以下になります。
Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies
Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies\Low
ですので、ここまでの処理は通常モードのクッキーのみを削除しています。
保護モードのクッキーを削除するには更に「Low」フォルダまで掘り下げてファイルを削除する必要があります。
この処理が以下になります。
If InStr(cookieFolder, "Low") = 0 And modeType = 1 Then
cookieFolder = cookieFolder & "\Low"
GoTo label01
End If
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは通常モードのクッキー保存先に「Low」フォルダを付加しています。
あとは、「GoToステートメント」を利用して、再度削除処理の場所まで戻り保護モードのクッキー削除処理をします。
以上がIEのクッキー削除「cookiesDel」の解説となります。
次の記事: VBAでIE操作に役立つ親ディレクトリパス取得 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。
こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。