No.2ベストアンサー
- 回答日時:
#1です。
Sub DeleteFile
~
End Sub
の所を
Sub DeleteFile(Target As String)
Dim SH As SHFILEOPSTRUCT, re As Long
With SH
.hwnd = Application.hwnd
.wFunc = FO_DELETE
.pFrom = Target
.fFlags = FOF_ALLOWUNDO
End With
re = SHFileOperation(SH)
If re <> 0 Then MsgBox "削除に失敗しました", vbExclamation
End Sub
と入替えてみて下さい。
#1さん、早速のお返事ありがとうございました。
上の通りDeleteFileの中を入れ替えるとうまく行きました!
どうも本当にありがとうございました。
最初の内容とどう違うのか、今後のために考えました。
元々のDeleteFileでは、TargetをApplication.GetOpenFilenameで
選ぶようになっており、DeleteFile()の引数部分で指定しないように
なっているようですね。
このあたり、APIがよく理解できていないのでうまく行かなかった
ようです。
私の場合はエクセルSheetのセルに入っている写真ファイル名を削除
したいので引数が必要だったということのようですね。
まだ十分理解していませんが、ともかくうまく行きましたので
これからまた勉強していきたいと思います。
どうもありがとうございました。
No.1
- 回答日時:
ExcelVBA ファイルを削除する
http://okwave.jp/qa2547199.html
こちらの質問でしょうか?
当方 WinXP & Excel2002 でテストした所ではきちんと出来ました。
なので環境による物かコードに不備があるのかと言う感じかと。
⇒PC環境とコードを提示されると良いかも知れません。
>DeletFile "c:\fileA"
DeleteFile eが漏れてますし、拡張子のないファイルなのでしょうか?
この回答への補足
お返事ありがとうございます。
>http://okwave.jp/qa2547199.html
>こちらの質問でしょうか?
失礼しました。そうです、この質問です。
いろいろ検索しているうちにてっきりGooでの質問と勘違いしておりました。
わざわざ見つけてくださりありがとうございました。
>当方 WinXP & Excel2002 でテストした所ではきちんと出来ました。
ということですが、最初の質問に書いてますとおり、
うまく行きません。具体的なコードを貼り付けますので
また、ご教示お願いします。
・・・・・・・・・モジュール1の先頭にコピーした部分・・・・・・・・・・・
''ごみ箱に送るためのAPI
Private Declare Function SHFileOperation Lib "shell32.dll" _
(lpFileOp As SHFILEOPSTRUCT) As Long
''SHFileOperation関数に渡すユーザー定義型
Private Type SHFILEOPSTRUCT
hwnd As Long ''ウィンドウハンドル
wFunc As Long ''実行する操作
pFrom As String ''対象ファイル名
pTo As String ''目的ファイル名
fFlags As Integer ''フラグ
fAnyOperationsAborted As Long ''結果
hNameMappings As Long ''ファイル名マッピングオブジェクト
lpszProgressTitle As String ''ダイアログのタイトル
End Type
Private Const FO_DELETE = &H3 ''削除する
Private Const FOF_ALLOWUNDO = &H40 ''ごみ箱に送る
Sub DeleteFile()
Dim SH As SHFILEOPSTRUCT, re As Long, Target As String
Target = Application.GetOpenFilename(Title:="削除するファイルを選択してください")
If Target = "False" Then Exit Sub
With SH
.hwnd = Application.hwnd
.wFunc = FO_DELETE
.pFrom = Target
.fFlags = FOF_ALLOWUNDO
End With
re = SHFileOperation(SH)
If re <> 0 Then MsgBox "削除に失敗しました", vbExclamation
End Sub
・・・・・・・・・・・・先頭部分のコピーはここまで・・・・・・・・・・・・・
・・・・・・・・・・・削除したいSubのところのコード・・・・・・・・・・
Sub 写真名削除()
Dim koumoku, delfile, sentakuaddress As String
koumoku = Cells(3, 1).Value
sentakuaddress = ActiveWindow.RangeSelection.Address
delfile = Range(sentakuaddress).Text ←削除したい写真のファイル名(JPG部分はここでは有りません)
'選択ファイル写真の削除
'Kill "C:\データ\写真\" & koumoku & "\" & delfile & ".JPG"
DeleteFile "C:\データ\写真\" & koumoku & "\" & delfile & ".JPG"
End Sub
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
以上です。Sub中にも書いてますが、
Kill でやるとエラーが出ず削除できます。
>DeleteFile eが漏れてますし、拡張子のないファイルなのでしょうか?
すみませんでした、質問のところでは直接打ち込んだのでeが抜けていました。拡張子はDeleteFileのところではつけています。
環境はエクセル2003、XPです。
恐れ入りますが、またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
'Range'メソッドは失敗しました
-
VBでグローバル変数を宣言するには
-
Access VBA標準モジュールにつ...
-
Excel VBAでリンク切れをチェッ...
-
VBAで別モジュールへの変数の受...
-
Excel VBAで、ユーザーフォーム...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
マクロについて教えてください。
-
【vba】フォームに書いてあ...
-
ベースモジュールって?
-
VBAで旧字体を異字体に一括で変...
-
標準モジュールを削除したい。(...
-
モジュールとは何ですか
-
PCをWI-FI化(現在は有線)
-
Apache HTTP Server 拡張モジ...
-
ユーザー定義関数に#NAME?が返...
-
本当にPublicな変数(配列で)
-
Excel VBA 標準モジュールの整...
-
acwzlibとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
'Range'メソッドは失敗しました
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォーム...
-
モジュールとクラスの違いって...
-
Excelで時刻になったら知らせて...
-
Access VBA標準モジュールにつ...
-
標準モジュールを削除したい。(...
-
Excel VBA 定義されたプロージ...
-
モジュールとは何ですか
-
ベースモジュールって?
-
acwzlibとは?
おすすめ情報