VBのKillで指定フォルダの中身を削除する際にエラーが発生する原因は?

このQ&Aのポイント
  • VBのKill構文を使用して指定フォルダの中身を削除する際に、特定のファイルの削除でエラーが発生する問題が発生しています。テキストファイルや小容量のpdfファイルの削除は成功していますが、8,531KBのpdfファイルの削除でパス名が無効というエラーメッセージが表示されます。
  • 原因はおそらく、指定フォルダ内のファイルの種類やファイル名の長さに関連している可能性があります。テキストファイルや小容量のpdfファイルの削除は問題なく行えますが、大容量のpdfファイルの場合、パス名が無効となるようです。
  • 対策としては、ファイルの削除前にファイルの存在を確認することや、ファイル削除の方法を変更することが考えられます。また、ファイルの削除ではなく、フォルダごと削除する方法を試してみることも一つの解決策となります。
回答を見る
  • ベストアンサー

VBのKillについて

皆様いつもお世話になっております。 質問なのですが VBの構文の一部で Dim strFilename as string strFilename = "C:\Temp\*.*" Kill strFilename とすると、指定したフォルダの中身が削除されるのですが、このフォルダ内に以下のpdfファイルを入れると、エラーが発生してしまいます。 テキストファイルで約同容量のファイルの削除も試み成功しました。 また、10KB程度のpdfファイルも削除できます。 何が原因かお分かりの方おりませんでしょうか? 【詳細】 ファイル名:J00932_4.pdf ファイルサイズ:8,531KB エラーメッセージ:パス名が無効です。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

全然自信がありませんが、以下のことを試してみてはいかがでしょうか。 1.ファイル名が原因かどうかチェックする。通常のテキストファイルのファイル名をJ00932_4.pdf にして削除できるかどうか確認する。削除出来る場合は、ファイル名の問題ではなく、このファイル自体に問題があるということになります。 2.問題のファイルをaaa.txtのように別のファイル名に変えて、削除できるか確認してください。これで削除出来る場合は、ファイル名が問題ということになります。削除出来ない場合は、ファイル自体が問題ということになります。 3.ファイル自体に問題がある場合は、以下の点を確認してみてください。 1)読みとり専用になっていないかどうか。 2)このファイルがショートカットのファイルになっていないかどうか。

masaichi1212
質問者

お礼

原因は3.1)のファイルが読み取り専用になっている。 でした、、、 ありがとうございました。 非常に助かりました。 何かありましたらまたお願いします。

関連するQ&A

  • kill ステートメント

    VB vr6 SP5 Win2K  です。 KILLステートメントで、ファイル属性が読み取り専用 のファイルを削除しようとすると 「パス名が無効です」とエラーメッセージが表示されます。 これは、属性を通常ファイルに変更してからじゃないと 削除できないのでしょうか?

  • VBからExcelのテキストを指定して開きたい

     VBのアプリケーションから文書名を指定してエクセルを起動したいのですが 出来なくて困っています。ちなみにコードは下記のとおりです。どこに問題があ るのか教えていただけないでしょうか。 Private Sub Command1_Click() Dim lngReturnCode As Long Dim strFileName As String strFileName = "AllTitles.csv"   lngReturnCode = ShellExecute(Me.hwnd, _ "open c:\***\***.xls", _ strFileName, _ vbNullString, _ App.Path, _ SW_SHOWNORMAL) End Sub

  • EXCELのKill処理について質問です。

    EXCELのKill処理について質問です。 とあるフォルダに「test.csv」がある場合のみ その「test.csv」を削除する処理を作りたいのですが、 Dim Del_Dir as string Del_Dir = ThisWorkbook.Path & "\test\test.csv" if Del_Dir <> "" then kill Del_Dir end if 上記のようにすれば、「test.csv」は削除できるのですが、 もともとフォルダに存在しない場合、Elseの処理がどのようにすれば できるので悩んでおります。 ご教示お願いします

  • killステートメントで

    お世話になります。 excelVBAで、フォルダ内にある殆どが共通性のない名前の ファイル数個を一度に削除するには、どう書けば良いのでしょうか? 但し、削除してはいけないファイルもあります。 これらはマクロ実行する度に作成される仮ファイルで、 確認のためにその都度削除せずに残してあります。 残った削除可能ファイル 11112.xls 22222.xls 33333.xls 44444.xls 55553.xls 削除不可ファイル 88888.xls dim scrp1 as string, scrp2 as string scrp1 = "C:\*2.xls" scrp2 = "C:\*3.xls" kill scrp1, scrp1, 88888.xls ↑わざわざ変数を使う必要もありませんが このような一気消しはできないのでしょうか? お手数おかけしますが、よろしくご教示下さい

  • フルパスからファイル名取得の方法

    指定したフォルダのフルパスを「bmpFiles」に入れているのですが、表示する時はファイル名のみの表示にしたくて「Path.GetFileName」を使用してファイル名を取得しようとしたのですが、「型'stringの1次元配列'の値を'string'に変換できません」というエラーが出てしまいます。 VBを始めたばかりでよく分からないのでアドバイスをお願いします。 Dim imageDir As String = fbd.SelectedPath ' 指定フォルダまでのディレクトリ Dim bmpFiles As String() = _ System.IO.Directory.GetFiles(imageDir, "*.bmp") 'フルパス Dim bmpFileName As String = _ Path.GetFileName(bmpFiles)  ←bmpFilesで上記エラー

  • vb2022 Resourcesの中のエクセルの扱

    vb2022 Resourcesの中のエクセルの扱い方を教えて下さい サンプルに貰ったvb(フォームアプリケーション)のソースには Resourcesの中にエクセルファイル(エクセル1.xlsx)があります。 そのエクセルをプログラム内でコピーして、一部のセルの値を書き換えて出力しています。 Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) 同じことをしたいのですが、Resourcesのエクセルの扱い方がわかりません。 まず、あらかじめ用意した『エクセル1.xlsx』をResourcesの中に置く方法がわかりません。 エクスプローラを開き 場所、プロジェクト名のフォルダResourcesフォルダとたどり、Resourcesフォルダの中に『エクセル1.xlsx』を置きました。 置いただけではVBのエディタ(ソリューションエクスプローラ)からは見えません。 ソリューションエクスプローラのResourcesで右クリックし、追加、既存の項目、で、今置いた場所(Resourcesフォルダの中の『エクセル1.xlsx』)を選ぶと ソリューションエクスプローラのResourcesの下に姿を現しました。 ここまでのやり方があってるのか分かりません。 次に コードを書くところ(ボタン押下とか)で Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) を書くと My.Resources.エクセル1 の部分がエラーになります。 サンプルに貰ったvbでは、 『My.Resources.』まで手で打つと候補に『エクセル1』などが挙がってきますが 一から作った分は候補が出てきませんし、エラーになります。 どこかで、 (略)\Resources\エクセル1.xlsx と My.Resources.エクセル1 の紐づけが必要なのだと思いますが、どこで何をすればいいのか分かりません。

  • vb6の初心者です。特定の文字について

    よろしくお願いします。 私はVB6の初心者です。 かなり初歩的な質問ですが、聞いてください。 ファイル名の命名規則を識別するプログラムを組みたいのですが、 *(アスタリスク)など、ファイル名として使えない決まりがあります。 ファイル名の命名規則に反する文字を調べたいのですが、 *(アスタリスク)などを文字として認識させるにはどうすればいいのでしょうか。 ワイルドカードとして、読み込んでしまうため、文字として読み取ってくれません。 どなたか文字として認識させる記述の仕方がわかる方、いらっしゃいますでしょうか。 ご教授お願いします。 ファイル名に反する文字: * ? \ / | < > : "(以上の9文字) strFileName   ' ファイル名が格納されているString型の変数 if strFileName Like "*?*" Or strFileName Like "***" ...(他の条件)... Then   ' 命名規則に反するか   MsgBox "ファイル名が正しくありません!"   ' 反しているのでエラー End If

  • VB.NETでのiniファイル読込について。

    .netでのiniファイル読込がうまくいきません。 何が悪いのかさっぱりわかりません。 ご指摘お願いいたします。 環境 os :xp 開発ソフト VB.NET ver 1.1.4322 SP1 ソース Private Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long '実行ファイルパスの取得 *VB6のapp.path Shared Function GetAppPath() As String Return System.IO.Path.GetDirectoryName( _ System.Reflection.Assembly.GetExecutingAssembly().Location) End Function Function INI_DBPATH_READ(ByVal FilePath As String) As String Dim lngRet As Long   '読み込みバッファ(固定長) Dim strGetBuff As String = 256   'iniファイルより読み込む文字列のサイズ Dim intGetSize As Integer   'セクション名 Dim strSection As String   'キー名 Dim strKey As String   '読み込みエラー時の出力文字列 Dim strErr As String   'iniファイル名(フルパス) Dim striniFn As String strGetBuff = Space(256) strSection = "TIFF_FOLDER" strKey = "PATH" strErr = "失敗" striniFn = Replace(GetAppPath(), "\bin", "\Ini") & "\test.ini" intGetSize = 256 'strGetBuffに文字列を取得する lngRet = GetPrivateProfileString(strSection, strKey, strErr, _ strGetBuff, intGetSize, striniFn) '末尾のNull除去 MsgBox(Microsoft.VisualBasic.Left(strGetBuff, InStr(strGetBuff, Chr(0)) - 1)) End Function iniファイルの内容 [TIFF_FOLDER] PATH=成功

  • VB6でテレビ番組表HTMLの保存

    VB6の以下のプログラムで下記URLのテレビ番組表を保存しようとしたのですが、うまくできませんでした。ソースを開いてみるとEUC-JPとなっていまして、これが原因かと思うのですが、保存するにはどうしたら良いでしょうか? よろしくお願いします。 ■URL http://tv.nikkansports.com/tv.php?site=007&mode=06&category=g&area=025&template=time&sdate=20081226&lhour=24&shour=5&arg=05 ■プログラム Private Sub Command1_Click() Dim strURL As String ' 取得URL Dim strFileName As String ' ファイル名 ' URLとファイル名を代入する strURL = Text1.Text strFileName = Text2.Text ' 指定されたURLのドキュメントをファイルに出力する Open strFileName For Output As #1 Print #1, Inet1.OpenURL(strURL) Close #1 MsgBox strURL & "を" & strFileName & "に出力しました" End Sub

  • 同じフォルダーに保存したい。

    報告書.xlsを一部加工後に実行するVBマクロで教えてください。同じフォルダー内で報告書.xlsを上書き保存しさらに4個のsheet(報告書、詳細、依頼書、関連写真)の内、2個のsheet(依頼書、関連写真)を削除した後にsheet(報告書)のセル"Z1"の名前で保存すべく作成したのですが(Z1).xlsが同じフォルダーに作成できません。マイドキュメントに出来てしまいます。 Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 Application.DisplayAlerts = False strFileName = "報告書" ThisWorkbook.SaveAs strFilePath & strFileName Sheets("関連写真").Select ActiveWindow.SelectedSheets.Delete Sheets("依頼書").Select ActiveWindow.SelectedSheets.Delete Sheets("報告書").Select strFilePath = ThisWorkbook.Path & "\" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveSheet.Range("z1").Value End Sub

専門家に質問してみよう