• 締切済み

VB6で特定のファイルを閉じたい

VB6ですでに存在しているcsvファイルに書き込みをするプログラムを作っているのですが、 書き込みしたいcsvファイルが開いているとエラーになって書き込みができません。 なので、「書き込みしたいファイルが開いているか判定」して、 「開いている場合は閉じたい」のですが、どうすれば良いでしょうか? 開いているファイルはVB6で開いたのではなくて、ユーザーが開いたファイルになります。

みんなの回答

回答No.2

おっと失礼。 閉じるのでしたね。 すみません。VB6 は持ち合わせていないので VBAですが、ファイルを誰が使用中か調べるために以前巡り合ったところが残ってました。 http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/16/how-can-i-list-open-sessions-and-open-files-on-a-computer.aspx VBSなのでVB6にも移植は簡単かと思います。 ただ、強制的に閉じるのはトラブルの元なので リンク先のように使用者を調べて、鈴木さーん閉じてぇ!と叫んだ方が・・・。 (共有フォルダ上のファイルの場合ですよね?  Windows系のファイルサーバーなら有効でしょうけど、  Linux の Samba とかだと未検証です)

回答No.1

こちらで 指定のファイルが使用中かどうかを調べる (015) http://hanatyan.sakura.ne.jp/vbhlp/excel03.htm なお、リンク先にもありますが メモ帳で開いている場合にはどうしようもありません。 メモ帳で開いているときには、 そのファイルをエクスプローラなどで削除も出来ちゃいます。

関連するQ&A

  • ファイルのコピー(VBにて)

    OS:windows2000pro VB:VB6.0sp5 元ファイル場所:"C:\work_from\データ050512.csv 元ファイル  :"データ050512.csv" コピー先場所:"C:\work_to 条件1.コピー先に元ファイルと     同じ名前のファイルが存在する場合      →上書きとする 条件2.コピー先に元ファイルと     同じ名前のファイルが存在し     ファイルがアクセス中(開かれている状態)の場合      →コピー先のファイルは、       他からアクセスされる可能性が有       これを考慮して下さい。       アクセス中のファイルはアクセス中は更新(コピー)       されなくても問題ないかと考えています 以上、初歩的なご質問で申し訳御座いません。 よろしくお願いいたします

  • VB6.0 で CSVファイルをEXCELで起動

    VB初心者です。 質問内容なのですが、 VBで「ドライブ/ディレクトリ/ファイルリストボックス」を用いて、ファイルボックスから表示されたファイルをクリックしてCSVファイルをEXCELで起動したいプログラムを作成したいのですが、 CSVファイルをクリックしたときにEXCELで起動する部分のプログラムがわかりません。 言葉足らずの部分が多々あるかと思いますが、手が空いたときにでも、御教授を宜しくお願い致します。

  • 【VB6】CSVファイルの内容の条件設定をして表示

    【VB6】CSVファイルの内容の条件設定をして表示 お世話になります。 VB6で、テキストボックスにCSVの内容を表示するプログラムを作成したのですが、 CSVの一部の行だけをif文で検索をかけるような内容を追加しようとしておりますが、良い方法はございますでしょうか。 例えば、Excelで開く所のA列が「日付」の項目であり、1/1から3/1までのCSVの内容を表示…といった具合です。 CSVをテキストボックスに表示させるプログラムは、下記サイトを参考にしています。 http://hanatyan.sakura.ne.jp/(VB6.0関係>ファイル操作関係>です) 参考になるサイトがございましたらお教え下さい。よろしくお願い致します。

  • VB2005 でCSVファイルの読み込み

    VisualBasic2005でカンマ区切りのcsvファイルを読み込み、各項目を配列に取り込みたいのですが、どうすればいいのですか? VB6の時のように書くとエラーになります。 VB2005にはopen命令はないみたいですね。 Open ファイル名 For Input As #1 input #1,s(1),s(2),s(3) close #1 ちなみにcsvファイルの内容は "会社名(co.xxx,sss)","工場名","製品名(aaa,xxx)" のように各項目中にカンマやピリオドが入っています。 VB6はVBAではダブルコーテーションで囲めば正常に読み込めました。 どなたか教えて下さい。よろしくお願いします。

  • VB6でファイルを開く

    こんにちは。 いま作成中のプログラムなんですが、data.csvというファイルを作って、そのファイルに値をいれていきます。 現在、data.csvはexeファイルのあるフォルダに保存されるようになっています。 このデータを、プログラム中で呼び出して見たいのですが、どうすればよいでしょうか? 第一希望としては、計算処理中に呼び出してExcelに値が入っていくのを見たいです。 が、むりなら計算処理が終了した後でも可です。 よろしくお願いします。

  • VB2005で複数ファイルを1つのファイルにしたい

    VB2005初心者です。 VB2005を使って以下2つの事がしたいので、教えてください。 (1)配布用に、なるべくユーザーにわからないように(画像等)  複数ファイルを1つにまとめる方法(ZIPのような感じです)。 (2)まとめた1つのファイルをEXEで使用する場合の方法

  • VB2010でCSVファイルを読み、配列に入れる

    ExcelVBAで、フォルダを選択しCSVファイルを表示⇒クリックで対象ファイルを選び配列に入れる次のプログラムを作りました。その後でデータを加工しグラフィック化してるのですが、VBAのグラフィック機能が遅いのでVB2010に変えようと思いいろいろやってみたのですが、どうもうまくいきません。 どなたか、VB2010ではどのようなプログラムになるのか、教えていただけないでしょうか。 'Excel VBA---------------------------------------- Sub CSVデータ() Dim xd(1000),yd(1000) 'フォルダを選ぶ ChDir ThisWorkbook.Path 'CSVファイルの一覧 pname = _ Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1,Title:="開く",MultiSelect:=False) '対象ファイルをクリックで選ぶ If pname <> False Then Workbooks.Open Filename:=pname End If fname = ActiveWorkbook.Name 'CsVファイルのセルから配列へ移す nstart = 6 nend = nstart +500 k = 0 For i = nstart To nend '6行目から500行の2列、3列を読み配列に入れる k = k + 1 xd(k) = Cells(i, 2) yd(k) = Cells(i, 3) Next i End Sub

  • VB6とVB.NETでNullの扱いが違う?

    いつもお世話になっております。 VB6.0で開発していたプログラムをVB.NETに変更することになりました。 そこで、以下の所で困っています。 VB6.0で   If IsNull(T_RYOSYU!cnt) = True Or T_RYOSYU!cnt = 0 Then と書いていた箇所をVB.NETで   If IsDBNull(T_RYOSYU.Fields("cnt").Value) = True Or T_RYOSYU.Fields("cnt").Value = 0 Then と変更しました。 このプログラムでT_RYOSYU.Fields("cnt").ValueがNullのとき、エラーが発生しました。 原因はOrの後で、Nullと0を=で比較していたからなのですが、 VB6.0の場合はNullでもそのようなエラーは発生しませんでした。 OrをOrElseに変更することで、Nullの場合には後ろの式は判定されなくなったので、VB.NET側でも動くようになりました。 VB6.0の場合はNullと0の比較が出来たということでしょうか? それとも、VB6.0の場合はOrの前が真の場合、後ろは判定されないのでしょうか? よろしくお願いします。

  • VBでファイル読み込み

    VBであるところにあるCSVファイルのデータを読み込みエクセルへ変換出力したいのですが教えてください。コモンダイアログボックス(?)と言うものを使って作成したいのです。よろしくお願いします。 がんばってやってみたのですがわかりません。教えてください。 Private Sub Command1_Click() Dim gnum(25), tensuu(32, 99) Dim sougouten(99), heikin(99), gouhi$(99) 'ファイルを開く On Error GoTo ErrHandler 'コモンダイアログボックス CommonDialog1.CancelError = True CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" _ & "テキスト ファイル (*.txt)|*.txt|バッチ ファイル (*.bat)|*.bat" CommonDialog1.FilterIndex = 2 CommonDialog1.ShowOpen With CommonDialog1 .FileName = "" .ShowOpen End With Exit Sub ErrHandler: ' ユーザーが [キャンセル] ボタンをクリックしました。 End Sub

  • VBでCSVに書き込みをするには?

    プログラム超初心者です。皆様教えて下さい。 りんご,2,100 いちご,4,500 このようなCSVファイルに VBにて 100 を 200 に書き換えるのには、どのようにすれば いいのでしょうか?splitで切り分けて書くようなイメージはあるのですが・・・ よろしくお願いします。

専門家に質問してみよう