• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

App.Path でここの掲示板のVBカテゴリで検索してみましょう。 その中の一つ [絶対パスでないとダメなのでしょうか?] http://okweb.jp/kotaeru.php3?q=1040430

その他の回答 (1)

  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.2

app.path でVBプロジェクト(EXE)のあるパスが拾えますので、それを利用して絶対パスを作成すればよいかと思います。

関連するQ&A

  • 相対パスが使えない

    EXCELのファイルを呼び出したいのですが,絶対パスで e:\vb6.0\book1.xls と指定するとファイルが開くのですが, 相対パスで .\book1.xls と指定するとファイルが開けません。 なぜでしょうか? EXCELのファイルとvbのファイルは同じフォルダ内にあります.

  • VBからEXCELを保存

    VBからEXCELに保存したいのですが、前準備としてEXCELのsheet2で保存します。VBを実行したときにExcelのsheet1に保存したいのですが、どうすればいいかわかりません、おしえてください。多分、保存するときにSheet2を対象にしていると思うので、sheet1を対象にしたいのですが・・・ /****************** VBを実行したときの処理 ********************/ 'アプリケーションの参照 Set xlApp = CreateObject("Excel.Application") 'ブックの参照 Set xlBook = xlApp.Workbooks.Open("C:\テスト\テスト.Xls") 'シートの参照 Set xlSheet = xlBook.Worksheets("Sheet1")

  • vbスクリプトについて

    Excelファイル(D:\test.xls)を再起動するvbスクリプトを作成し、 4時間おきに実行するタスクスケジュールを設定したいと思います。 ※6:00、10:00、14:00、18:00、22:00、2:00のタスクスケジュールを作成し、  vbスクリプトを実行。 次のタスクスケジュールが実行されるまでの4時間は、Excelファイル(D:\test.xls)は 開いたままの状態です。 なので、vbスクリプトで、まずExcelファイル(D:\test.xls)が開いている場合は、 「D:\test.xls」を一旦(上書き保存なしで)閉じて、再度、「D:\test.xls」を開きたいと思っています。 ※他のExcelファイルが開いている場合は、「D:\test.xls」のみ閉じる。 「D:\test.xls」を開くスクリプトはできたのですが、「D:\test.xls」を閉じるところがわかりません。 どなたか教えていただけないでしょうか。 【vbスクリプト】----------------------------------------- '「D:\test.xls」が開いている場合は閉じる  ??? '「D:\test.xls」を起動する Dim xlApp Dim xlWbk Set xlApp=CreateObject("Excel.Application") xlApp.Visible=True Set xlWbk=xlApp.Workbooks.open("D:\test.xls",True) ---------------------------------------------------------

  • VBでエクセルのバージョンを指定して開く

    PCにEXCEL2002と2013がインストールされています。 VBでエクセルを起動し、マクロを実行したいのですが、その際に起動するエクセルのバージョンを指定したいと考えています。 以下でやると標準設定のEXCELが開いてしまい、バージョンの指定ができません。 Dim xlApp As New Excel.Application() Dim xlBooks As Excel.Workbooks xlBooks = xlApp.Workbooks xlBooks.Open("C:\test.xls") xlApp.Visible = True xlApp.Run("test.xls!macro") なにか方法はありますでしょうか?

  • VB6でEXCELの表をHTML形式で保存する方法は?

    VB6でEXCELのデータを作成してHTML形式で保存したいのですが、根本的にできないものでしょうか? EXCELのVBAではWebページで保存ということができるので試行錯誤してみたのですが VB6のヘルプでSaveAsメソッドを見る感じでは新しいファイル名までは指定できますが保存形式はEXCEL VBAのように指定できないようです。 XLSファイルの表までは完成できますが、そのXLSファイルをHTMLファイルにできればぃぃんです。 VB6からEXCELを制御してHTML形式で保存させるとか なにかいい方法はないでしょうか?

  • EXCELの[名前を付けて保存]で出てくるフォルダを指定した。

    - EXCLEの[名前を付けて保存]を押すと、初期値で表示されるフォルダがありますが、 これをなんとか固定にしておく方法はないでしょうか??? 出来れば、全部のEXCELを、固定にしてしまうのではなく、あるEXCELだけは、 [名前を付けて保存]のフォルダを固定にしたいと考えています。 実は、VBでサーバのEXCELを起動するようにしているのですが、これを[名前を付けて保存]に してしまった場合に、サーバのフォルダが指定されてしまうために、とっても悩んでいます。 VBを使用していますので、少々のことなら操作可能かとも考えております。 もし、何かアドバイスをお持ちの方がいらっしゃいましたら、どうか何でもかまいません。 よろしくお願いいたします。 m(。_櫻_。)m -

  • makefileでのファイル指定について

    プログラムを実行するためのコンパイルでは、makeを使うことが多いと思います。makefileというファイルにその内容を書いておくわけですが、makeというのは必要なものをかき集めて(不必要なものは集めない)セットしていくということなるわけですね。ファイルを集めるというのは結局はフォルダを指定するということなのですが、そのフォルダとは相対パスで指定するのか、絶対パスで指定するのか考え方を教えて頂きたいのですが。私の予想では当然ながら相対パスが普通だということなのですが。また絶対パスでもいいということにもなるでしょうか。./とかつけてフォルダ指定すると相対パスになるとか。makeは苦手でそこを確認したいと思いました。 あと、必ずではありませんが./configureとかしますが、これは何をしているのでしょうか。 よろしくお願いします。OSとしてはWindows, WSLというところでの利用を考えています。

  • Excelマクロ パスの指定方法

    Excelのマクロで別のファイルを編集するのにパスを指定しています。 現状は使用しているドライブ、フォルダが固定されているので下記の様に ドライブ名から指定しています。 <現状>  ・C:\AAA\BBB\PPP.xls   →マクロの入っているファイルを指定  ・C:\AAA\BBB\CCC\SSS.xls  →編集したいファイルを指定 今後、別のドライブやフォルダで使用出来る様にしたいのですがどうすれば よろしいでしょうか?  ・~\BBB\PPP.xls、~\BBB\CCC\SSS.xlsの位置関係は固定  ・~\BBB\CCCの下にあるSSS.xlsを開いて編集したい。  ・~\BBB\PPP.xlsがC\、D\等どのドライブ、フォルダになっても使用可能にしたい。 以上よろしくお願い致します。

  • Excel2010VBAでエラーが出る相対パス指定

     ExcelVBAで,Excel2007と2013で問題無いのに, Excel2010ではエラーが出る相対パス指定について, ご教示を頂けると助かります.  ExcelVBAにて, ○○.dll ファイルを 以下のように宣言して使っています. Private Declare Function LoadTT Lib ".\○○.dll" _ () As Integer  プログラムの中で, ret = LoadTT() を実行すると, Excel 2007では相対パスでの指定で問題無く動作しますが, Excel 2010では相対パスでの指定ではエラー(ファイルが見つからない)"48"が出ます. そこで,相対パス指定をやめて絶対パスに変更すると問題無く動作します.  念のため Excel2013でも試したところ, 2007と同様に,相対パス指定でも問題なく動作しました.  なお,ExcelVBAのファイル「○.xlsm」と「○○.dll」は同じフォルダーに入れています.  また, ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path の実行によるカレントフォルダーの確認も,どのバージョンでも同じに正しく確認出来ています.    因みに,バージョンの違う各Excelは別々のPCでの動作ですが,使用OSは Windows7 Professional 32bit で同じです.  以上のように Excel2010だけ動作が異なります.  とりあえずは絶対パス指定にすれば問題は解消するのですが, Excel2010で特に何か設定したということは無いので気持ち悪く, 原因と思われることでご存じ方がいらしたらご教示を頂けると助かります.  どうぞよろしくお願い致します. ==

  • エクセルで他のブックの参照

    ファイル名:Test1.xlsのセルに、"="と入力し、ウィンドウで、Test2.xlsを選択して、Sheet1の"A1"のセルを選択すると、Test1.xlsのセルには、=[Test2.xls]Sheet1'$A$1と入力されます。 そこで、一度Test1.xlsを保存して、再度開くと、、=[Test2.xls]Sheet1'$A$1の部分が、絶対パスに自動的に更新されてしまします。 これを、相対パスで扱う方法ってありますでしょうか? フォルダーを移動させることがあり、どのように対応すればいいのか悩んでいます。 宜しくお願い致します。

専門家に質問してみよう