
こんにちは。
VB.netでプログラミングしているんですが、ファイル処理について質問があります。ファイルを保存する際に、よく「すでにファイルが存在します。上書きしますか?」と聞いてきますよね。これを実現するにはどんな方法があるでしょうか?ただし、コモンダイアログは使いません。FileOpen、FileCloseで実現したいのです。
以下のプログラムをどのように変えたらいいでしょうか?ご教授お願いいたします。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FileOpen(1, Format(Now, "yyyyMMdd") & " .txt", OpenMode.Output)
PrintLine(1, "test")
FileClose(1)
End Sub
No.1ベストアンサー
- 回答日時:
>FileOpen、FileCloseで実現したいのです。
VB.netは使ったことが無いのですが(^^;
通常は、こういった場合エラートラップを使用します。
public function IsFileExist(strPath as string) as boolean
IsFileExist=True
on error goto err_trap:
call GetAttr(strPath) 'VB.net の場合FileAttr()
exit function
err_trap:
IsFileExist=false
end function
ファイルをいちいち開かなくても、GetAttr()などの関数でファイル属性を読み取ることで、そのファイルが存在する(厳密に言うとアクセス可能)かどうかを判定できます。
また、エラートラップを使用する場合は、起こったエラーを判定する必要がありますが
こういった関数の場合、エラーが起こりえるのはGetAttr()の部分だけです。
従ってエラーが起こった=ファイルが無いと考えていいわけです。
回答ありがとうございます。
この方法で実現できました。
ただ、VB.netの場合のFileAttr()の引数はstringでなくfile numberのようですね。また、私のプログラムの中では、OpenMode.OutputとOpenMode.Inputを使い分ける必要がありました。
No.2
- 回答日時:
基本的に#1さんと同じです。
私の場合は、FileLenを使っています。
ファイルサイズの取得と、ファイルの有無判定を共用でやっています。
0以上が戻ればファイル有り
-1ならファイルなし
FileOpen、FileCloseで書くとき固定長であれば、
レコードサイズでファイルサイズを割れば件数も出せます。
家に持ち帰ってないのでうろ覚えですが、下記のような事をやったと思います。
Function getFileLen(strFileName as String) as Long
On Error goto err_trap:
getFileLen = FileLen(strFileName)
Exit Function
err_trap:
getFileLen = -1
Exit Function
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
ExcelVBAで既に開いてるwordを...
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
gccを行ってもexeファイルが生...
-
DisplayAlertsブロパティで ”実...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
データベースソフトのアクセス2...
-
ASPからACCESSのOPENどうしても...
-
fgets関数のEOFの扱い方について
-
すでにファイルが開かれている...
-
NAS上のファイルの使用中が解除...
-
「複数の選択範囲に対して実行...
-
排他ロックが掛かっているファ...
-
Vba ファイル書き込み時に書き...
-
Returnに対するGoSubがありません
-
ディストリビューションで作成...
-
VBA ExecuteExcel4Macro 型が一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access テキストボックスの値取得
-
Returnに対するGoSubがありません
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
NAS上のファイルの使用中が解除...
-
アクセスのクエリでコンパイル...
-
VBでファイルが開かれているか...
-
ExcelVBAで既に開いてるwordを...
-
エクセルマクロでエラーの原因...
-
batファイルでレジストリキーの...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
「アクティブ ユーザーが多すぎ...
-
データベースソフトのアクセス2...
-
VBから参照できないCのDLLを使...
-
DisplayAlertsブロパティで ”実...
-
Access2013にてドラッグ&ドロ...
-
ACCESS VBAでのインポート
-
すでにファイルが開かれている...
-
Vba ファイル書き込み時に書き...
おすすめ情報