• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】IEのCookieなどの削除方法)

【VBA】IEのCookieなどの削除方法

このQ&Aのポイント
  • Excel VBAでIEを起動してyahooを表示するマクロを作成しています。質問ですが、IEオブジェクトを作成したタイミングでCookieなどを削除するには、どのようにすればよろしいしょうか?
  • Excel VBAでIEを起動してyahooを表示するマクロを作成しています。IEオブジェクトを作成したタイミングでCookieなどを削除する方法についてお教えください。
  • Excel VBAでIEを起動してyahooを表示するマクロを作成しています。IEオブジェクトを作成したタイミングでCookieなどを削除する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

1.ここを基本に 'http://vbaie.blog111.fc2.com/blog-entry-21.html 2.Vista以降であれば、下記を参考に 'http://stackoverflow.com/questions/5624599/how-to-use-the-shgetknownfolderpath-function-from-vb6 ※定数とか構造体の不足があるので、Web検索して探して下さい。 3.上記のバージョン判断の関数が動かないので、安直に別の解を探して 'http://homepage1.nifty.com/rucio/main/Samples/Sample064WindowsVersion.htm Windows7, 64bitのCookieのフォルダーは下記の通りでした C:\Users\???????\AppData\Roaming\Microsoft\Windows\Cookies と、長々と書きましたが、Shellを用いる方が簡単な様です http://gallery.technet.microsoft.com/scriptcenter/621ebaff-8a1e-445b-8e3b-cf31bbec5542 Cookieを消すところは未検証ですが、ご参考まで。

h_hogehoge
質問者

お礼

mitarashi 様 お忙しい中、ご教授いただきありがとうございます。 1.をWinXPで確認しましたが、問題なくCookieのtxtファイルを削除することができました。 本当に助かりました。 ありがとうございます。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#2です。使用しているAPIに興味があったので、2を動くようにしてみました。Windows7Home, 64bitでしか試しておりません。 英語なのでよく分かりませんが、Copyrightは大丈夫っぽいので。 Private Const CSIDL_COOKIES = &H21 Private Const MAX_PATH = 260 Private Const SHGFP_TYPE_CURRENT As Long = &H0 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 Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (VersionInfo As OSVERSIONINFO) As Boolean Private Type SHITEMID cb As Long abID As Byte End Type Private Type ITEMIDLIST mkid As SHITEMID End Type Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion(127) As Byte End Type Sub deleteAllCookies() Dim cookieFolder As String Dim fso As Object Dim cookieFile As Object cookieFolder = SHGetFolderPathVB(CSIDL_COOKIES) Set fso = CreateObject("Scripting.fileSystemObject") For Each cookieFile In fso.GetFolder(cookieFolder).Files If fso.GetExtensionName(cookieFile) = "txt" Then Debug.Print cookieFile.Name ' cookieFile.Delete End If Next End Sub Private Function SHGetSpecialFolderLocationVB(ByVal lFolder As Long) As String Dim lRet As Long, IDL As ITEMIDLIST, sPath As String lRet = SHGetSpecialFolderLocation(100&, lFolder, IDL) If lRet = 0 Then sPath = String$(512, Chr$(0)) lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath) SHGetSpecialFolderLocationVB = Left$(sPath, InStr(sPath, Chr$(0)) - 1) Else SHGetSpecialFolderLocationVB = vbNullString End If End Function Private Function SHGetFolderPathVB(ByVal lFolder As Long) As String Dim path As String If IsVistaOrHigher() Then SHGetFolderPathVB = SHGetSpecialFolderLocationVB(lFolder) Else path = Space$(MAX_PATH) SHGetFolderPath 0, lFolder, 0, SHGFP_TYPE_CURRENT, path SHGetFolderPathVB = Left(path, InStr(path, vbNullChar) - 1) End If End Function 'Vista~8はdwMajorVersion = 6, dwMinorVersion = 0, 1, 2と増 Private Function IsVistaOrHigher() As Boolean Dim osinfo As OSVERSIONINFO Dim retvalue As Integer Dim bVista As Boolean Dim i As Long bVista = False osinfo.dwOSVersionInfoSize = 148 For i = 0 To 127 osinfo.szCSDVersion(i) = &H20 Next i retvalue = GetVersionEx(osinfo) If osinfo.dwPlatformId = 2 Then If osinfo.dwMajorVersion >= 6 Then bVista = True End If End If IsVistaOrHigher = bVista End Function

h_hogehoge
質問者

お礼

mitarashi 様 改めてありがとうございます。 今回は時間の都合上、WinXPに特定したマクロにするので、回答No.2でご教授いただいた1.を参考にさせていただきます。 今後、WinXPでもWinVistaやWin7でも動作できるようにする予定ですので、その際は今回ご教授いただいた内容を参考にさせていただきます。 本当にありがとうございました。

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

Yahoo が作ったクッキーの名前は知らないけれど、そいつの有効期限を過去の日付にしてやるとか。 http://okwave.jp/qa/q4667996.html

h_hogehoge
質問者

お礼

x-1919 様 お忙しい中、ご教授いただきありがとうございます。 参考にさせていただきます。