こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【ExcelVBA】IEの一時ファイルと履歴の削除

こんにちわ。

先日、こちらでExcel VBAを用いてCookieを削除する方法をご教授いただきました。
http://okwave.jp/qa/q7951325.html

今回、Cookie以外にインターネット一時ファイルと履歴を削除するため、以下のロジックを組んだのですが、どちらとも削除できませんでした。

WinXPで一時ファイルを削除しようとすると「書き込みできませんでした」とエラーがでます。
また、DeleteUrlCacheEntryでも削除できませんでした。

お忙しいところ大変申し訳ありませんが、インターネット一時ファイルと履歴を削除する方法をご教授いただけないでしょうか?

======================================================================
Private Sub 一時ファイル削除(Byval psKbn)

Dim oFolder As Object
Dim sPath As String
Dim lRs As Long

' 一時ファイル、履歴が保存されているフォルダのパスを取得
sPath = String(260, vbNullChar)
If psKbn = "1" Then
' 一時ファイル
lRs = SHGetFolderPath(0, &H20, 0, 0, sPath)
Else
' 履歴
lRs = SHGetFolderPath(0, &H22, 0, 0, sPath)
End If

If lRs = &H0 Then
sPath = Left(sPath, InStr(1, sPath, Chr(0)) - 1)
Set oFolder = CreateObject("Scripting.FileSystemObject")
Call oFolder.DeleteFile(sPath & "\*.*")
End If

Set oFolder = Nothing

End Sub
======================================================================

以上です。

++++++++++++++++++++
【環境】
OS:WinXP 以上
ブラウザ:IE7 以上
Excel:Excel2007 以上
++++++++++++++++++++

投稿日時 - 2013-02-24 22:43:48

QNo.7962949

すぐに回答ほしいです

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

とりあえず一時ファイルの方だけみつけました。結構大げさな感じですが...
Windows7 Home 64bit では、VB6→VBAのフォームに合わせた小改造で動きました。
Form_Load() -> UserForm_Initialize() への変更と、CommandButton,ListBoxの名前をVB6用コードに合わせて改名等
一時ファイルを一個ずつ消すのは試しておりますが、DeleteAllの方は未検証です。
URLは http://www.mvps.org/vbnet/
Code Library -> File API -> FindFirstUrlCacheEntry: Delete the IE Cache
と進んで下さい。

ところで、VBAのUserFormにもUserForm_Resize()イベントはあるけれど、API等でフォームの属性を書き換えてやらないと、肝心のresizeが出来ない?その部分は未検証です。

投稿日時 - 2013-02-24 23:57:21

お礼

返事が遅くなり申し訳ありません。

ご教授いただいた方法で削除することができました。

本当にありがとうございました。

投稿日時 - 2013-03-04 23:45:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#1です。#2さんのご回答で十分なのでしょうが、中途半端になってしまうので、履歴削除の方も載せておきます。こちらは未検証です。ご参考まで。
http://web.archive.org/web/20030731142906/http://codeguru.earthweb.com/mfc/comments/45982.shtml

投稿日時 - 2013-02-25 21:58:21

お礼

返事が遅くなり申し訳ありません。

ご教授いただいた方法で削除することができました。

本当にありがとうございました。

投稿日時 - 2013-03-04 23:48:00

ANo.2

私が使っているマクロを書きます。
参考にして下さい。

Dim AAA, BBB, CCC

Set AAA = CreateObject("Shell.Application")
Set BBB = AAA.Namespace(32).Items 'インターネット一時ファイル
For Each CCC In BBB
CCC.Delete
Next
Set BBB = AAA.Namespace(33).Items '履歴
For Each CCC In BBB
If CCC.Name<>"index" Then
CCC.Delete
End If
Next
Set AAA = Nothing
Set BBB = Nothing

投稿日時 - 2013-02-25 09:53:40

お礼

返事が遅くなり申し訳ありません。

今回は mitarashi 様の方法で解決しました。

ご教授いただき、本当にありがとうございました。

投稿日時 - 2013-03-04 23:47:34

あなたにオススメの質問