プロが教えるわが家の防犯対策術!

お世話になっております。

VB6(visual basic 6)プログラムからファイルをパスを指定してセーブする際、既にその指定のパスのファイルが存在していた場合、に自動的に数字をつけてセーブしたいです。

パスc:\aru_path.xlsでセーブしたいとき、もしすでにc:\aru_path.xlsが存在していた場合、
c:\aru_path_1.xlsとかc:\aru_path(1).xlsのように自動で末尾に数字がつくようにしたいです。
そのとき、
oApp.ActiveWorkbook.DisplayAlerts = False
とか手段は何でも良いのですが、自動運転の途中での事なので、自動的に処理が進む意味で、メッセージが出て中断しないようにしたいです。

EXCEL:EXCEL 2000
OS: win XP

なお、ファイルが存在しているがどうかを調べる方法は知っております。(Dir関数でファイルの存在確認)

知りたいのは、windowsの機能(?)などで自動で
パス末尾にaru_path(1),aru_path(2),aru_path(3)...と付くようにして保存させたいということです。
言い換えれば、末尾数字が今いくつかをプログラム上保持しておきたくないということです。

もし万が一そういうことができないのであれば、別のことを考えるようにしますので教えてください!

ちなみにWINDOWSの機能にあるのかなと勝手に想像した理由:同じフォルダで、ファイル選択&コピペすると、自動で「コピー~。。。」と保存してくれる。

どうぞよろしくお願いいたします。

A 回答 (3件)

>知りたいのは、windowsの機能(?)などで自動で


>パス末尾にaru_path(1),aru_path(2),aru_path(3)...と付くようにして保存させたいということです。
>言い換えれば、末尾数字が今いくつかをプログラム上保持しておきたくないということです。
Windowsにはそのような機能が無いので、
下記のような関数を作れば番号付けが出来ます。
変数宣言などは省略しているので、適当に補ってください。
また、ファイル存在確認()とファイル保存()も適当な関数に置き換えてください。


FilePath = "c:\hogehoge\"
FilePure = "piyopiyo"
' 最大99までの通番に対応する。
For no = 0 to 99
 If no = 0 Then
  FileName = FilePath & FilePure & ".xls"
 Else
  FileName = FilePath & FilePure & "_" & Cstr(no) & ".xls"
 End If
 If ファイル存在確認(FileName) Then
  ' ファイルが存在しない場合は保存して終了する。
  Call ファイル保存(FileName)
  Exit Sub
 End If
Next no
MsgBox "既に100個のファイルが有るので保存中止"
    • good
    • 0

> 自動で「コピー~。

。。」と保存してくれる。

こちらはエクスプローラの機能ですね。
コマンドプロンプト、エクスプローラ以外のファイラでは無条件に上書きされたり、「上書きしますか?(はい/いいえ)」が出たりのファイラ固有の動作になります。

--
エクスプローラが、

> (Dir関数でファイルの存在確認)

のような事をやって、同名のファイルがあれば、

> 「コピー~。。。」と保存してくれる。

って事をしているのではないでしょうか?
    • good
    • 0

>windowsの機能(?)などで自動で…万が一そういうことができないのであれば


できないと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!