• 締切済み

【VB6】ファイル保存:同名パスがあったら[自動的に数字]をつけて保存させたい

お世話になっております。 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の機能にあるのかなと勝手に想像した理由:同じフォルダで、ファイル選択&コピペすると、自動で「コピー~。。。」と保存してくれる。 どうぞよろしくお願いいたします。

みんなの回答

回答No.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個のファイルが有るので保存中止"

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> 自動で「コピー~。。。」と保存してくれる。 こちらはエクスプローラの機能ですね。 コマンドプロンプト、エクスプローラ以外のファイラでは無条件に上書きされたり、「上書きしますか?(はい/いいえ)」が出たりのファイラ固有の動作になります。 -- エクスプローラが、 > (Dir関数でファイルの存在確認) のような事をやって、同名のファイルがあれば、 > 「コピー~。。。」と保存してくれる。 って事をしているのではないでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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

関連するQ&A

  • 【VB6】EXCELセーブ:既に存在していたら自動で数字つけてセーブさせたい

    お世話になっております。 VB6(visual basic 6)プログラムからEXCELのブックをパスを指定してセーブする際、既にその指定のパスのファイルが存在していた場合、に自動的に接尾辞をつけてセーブしたいです。 パス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 以下にターゲットの中核部分を切り出しました。 --- Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Add oApp.ActiveWorkbook.SaveAs "c:\aru_path.xls" '指定のパスで保存 --- ファイルが存在しているがどうかを調べるルーチンがわかればよいかと思い調べましたが分かりませんでした。 どうぞよろしくお願いいたします。

  • VB6.0でエクセル保存する時の保存場所の指定。

    VB6.0からデータをエクセルに保存させようとしています。 保存する方法は、エクセルを開くのではなく、 ボタンを押したらそのまま自動で保存させるようにしています。 そしてその名前をつけて保存をさせる処理で、ファイルの保存場所を示す パスの指定で少々困っております。 EXEファイルがある位置をカレントとして同一フォルダ内にあるtestフォルダに 全てデータは保存したいと考えています。 絶対パスを固定で指定すればそこに保存できますが、それだと違うPC上で実行すると 動作しない危険性がありますので、相対パスで指定したいと思っています。 ですが、実行ファイルから"./test/test.xls"と指定してもパスのエラーとなり 保存できません。 しかし絶対パスの固定でフォルダを指定すると保存できます。 ws.Name = "C:\vb_test\test\test.xls" これをEXEファイルのある位置からの相対パスで指定するにはどうすればいいでしょうか?

  • エクセルでパスを含んだファイル名

    エクセルのヘッダー・フッター編集で ワードのように"パスを含んだファイル名"(またはシート名)を 自動?で挿入することはできるでしょうか。 例えば、Cドライブの「あ」と言うフォルダーに保存してある テスト.xlsの「い」と言うシート名をヘッダーに挿入したい 場合、 C:\あ\テスト.xls\い と言うようにです。 ご教授をお願いいたします。

  • パスを使ってファイルを開く

    ファイルダイアログでパス取得を行った後に、 そのパスを使ってファイルをコピーということは出来るでしょうか? 行ってほしい動作としましては、 ・ファイルダイアログでパス取得 ・そのパスを使ってファイルをコピー としたいのです。 ちなみに、コピーするためのコードは Call Shell(Environ$("COMSPEC") & " /C COPY ""C:\AAA.xls"" Z:AAA.xls") といった、絶対パスによるコピーになっています。 何故、パス取得が必要かといいますと元ファイルの場所が変わることがあるからです。 どうしても分からないので方法あるようでしたら教えてください。

  • 自動で別名保存できる解凍ソフト

    フリーの解凍ソフトで、  ・ファイル名でフォルダを作って保存する  ・解凍ファイル内のフォルダを無効にする  ・解凍先に同名のファイルがある場合、自動で別名(末尾に数字などを加える)にして解凍する の三つの機能を有したものはありませんでしょうか。 二つ目までの機能を有するモノは普通にゴロゴロしていますが、三つ目の機能が見あたらないもので…。 もしご存じでしたらお教え願います

  • アプリケーションは自分のパスをどこに保存するのか?

    ファイルを読み込むアプリケーションを作成しているのですが、その際にファイルを相対パスで指定しています。 アプリケーションは自分の絶対パスを知らないと相対パスを指定出来ないと思うのですが、アプリケーションはどこにどのような形で自分の絶対パスを保存しているのでしょうか? プログラムで絶対パスの取得は出来ているのですが、取得した絶対パスを細工して保存してる変数に代入してパスを偽装したいのです

  • マクロでの自動保存

    エクセルで作ったデータをボタン一つで自動的に特定のフォルダーに 保存するマクロを作りたいのですが、色々なサイトを参考に保存名前を 付けて保存するプログラムまでは組めたのですが、特定のフォルダに 保存していくプログラムがうまく動きません。 下記に作成したコードを記載するので、アドバイスお願いします。 Sub データ保存() Sheets("シート名").Select パス = ActiveWorkbook.Path 別名 = Application.InputBox(prompt:="入力例.12345", _ Title:=" ファイル名を入力して下さい", Type:=2) 別名 = パス & "\" & 別名 & ".xls" Sheets("シート名").Copy ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close End Sub

  • エクセルVBAでの自動ファイル保存

    エクセルVBAを使い入力したシート(ファイル)を、一定のデータが 入力された時点で指定した場所に例えば作成日をファイル名にして自動 的に保存していくようにしたいのですが、プログラムはどのようにすればいいのでしょうか? 実現させたいプログラムは、このような感じにしたいです。 1.VBAで指定シートにデータ入力→2.データ数10個で自動的に日付をファイル名にして自動的に保存→3.更に、データ10個追加された時点で前に作成されたファイルを自動で更新→4.データの入力完了で更に自動で更新 2~4のプログラムをご教授お願いします。

  • 【VB6】EXCELのセルに0.033を"3.3%"と自動で表示指定入力したい

    お世話になっております。 VB6(visual basic 6)プログラムからEXCELのセルの表示形式をパーセンテージ指定したいです。 EXCEL:EXCEL 2000 OS: win XP 以下にターゲットの中核部分を切り出しました。 --- Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Add oApp.Cells(1, 1) = 1000 oApp.Cells(1, 2) = 33 oApp.Cells(1, 3) = "=a2/a1" --- EXCELのシートに 1000 33 0.033 と入力されます。 この記述ではセルがデフォルト表示のまま(0.033)です。 この0.033を自動的に3.3%と表示したいです さらには小数点以下桁数の指定方法が知りたいです。 (例えば3.300%などど表示させたり) EXCELのシートから手作業による表示形式変更方法は承知しております。 VB6からプログラムで自動に3.3%と出るようにしたいのです。 どうぞよろしくお願いいたします。

  • ファイルの保存

    すみません。VBAの初心者です。以下 教えていただけないでしょうか? EXCELファイルを指定のフォルダへ保存したい。 (1)Cドライブに”サンプルフォルダ”というフォルダを作成します。 (2)現在開いているEXCELファイルを Cドライブのサンプルフォルダに保存します 下の記述にでてくるsample.xls と現在開いているファイルは同じ名前です。 (現在開いているファイルの指定がどのように記述したらよいのかよくわからないため以下のように記述しました) 私のやりたいことは要はメールで送ったEXCELファイルを、指定のドライブとフォルダに保存させたいのです。EXCEL2000を使っています Sub フォルダ作成() On Error GoTo fin filePath = "c:\サンプルフォルダ" MkDir filePath MsgBox "フォルダを作成しました" & filePath savefilename = filePath & "sample.xls" nowbook = Workbooks("・・・・")←現在開いているファイル nowbook.SaveAs Filename:=savefilename Exit Sub fin: Select Case Err.Number Case 75 MsgBox "同じ名前のフォルダが存在します" End Select End Sub

専門家に質問してみよう