• ベストアンサー

相対パスでExcel Bookのオープン

こんにちわ。 相対パスでブックをオープンしようとすると、 「オブジェクト変数、またはwithブロック変数が設定されていません。」というエラーが表示されてしまいます。 絶対パス指定だと、正常にオープンできますし、同じ相対パス指定で、ブックのコピー&ペーストもできています。 なぜなのでしょうか?

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

  • ベストアンサー
  • Masazo-
  • ベストアンサー率48% (12/25)
回答No.2

カレントディレクトリが正しくないとか? CurDir関数?で確認してみてはいかがでしょうか。 最初に起動したときは開いたファイルのディレクトリがカレントになっていない気がします。 ChDirステートメントを使って変更するとうまくと思います。 (それだと絶対パス指定と同じになりますが。。。) 見当違いでしたらすみません。

forester
質問者

お礼

ご回答ありがとうございます。 そのとおり、相対パスで開こうとすると、excel.exeが格納されているパスが デフォルトパスになっていた為、上記のエラーが出ていました。 そこで、デフォルトパスの指定を行ってから、相対パス指定でファイルのオープンをしてみたところ、上手くできました。 ありがとうございました。

その他の回答 (2)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

Workbooks("Book1.xls").Path で、開いてるワークブックのパスが取得できるので、 Workbooks.open Workbooks("Book1.xls").Path & "\Book2.xls" などとしてみてはいかがでしょうか。 親フォルダ上のファイルを開くなら、 Workbooks.open Workbooks("Book1.xls").Path & "\..\Book3.xls" でOKだと思います。

  • koutaka
  • ベストアンサー率47% (18/38)
回答No.1

>質問:相対パスでExcel Bookのオープン >相対パスでブックをオープンしようとすると、 >「オブジェクト変数、またはwithブロック変数が設定されていません。」 >というエラーが表示されてしまいます。 なにで、相対パスでExcel BookをOpen使用としているのですか? VBAそれとも・・・

関連するQ&A

  • 相対パスが使えない

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

  • 絶対パス、相対パス、環境変数の概念が掴めない

    絶対パス相対パス環境変数についていまいち概念が掴めないのでどなたかご教示いただけないでしょうか? 絶対パスというものは指定のフォルダなどへの行き道をしていしたもの、相対パスはある程度のものだけきじゅつしてあるしか認識できておりません。 ググって探してみてもいまいちいい内容がなくて・・・ 何かいい知識の身につけ方があったら教えてください。 あと例えばCGIを使うためにActivePerlなどを入れたときに絶対パスで指定する方法があるとか言うのはどういった意味なのでしょうか?

    • ベストアンサー
    • Perl
  • 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で特に何か設定したということは無いので気持ち悪く, 原因と思われることでご存じ方がいらしたらご教示を頂けると助かります.  どうぞよろしくお願い致します. ==

  • 他のブックへのリンクで相対パスを使いたい。

    mac2011を使っています。 Dropboxを利用して数台のMacでエクセルのデータを共有したいと考えています。 「ブックA」で「ブックB」にリンクさせていますが、Doropboxはローカルのフォルダに データを保存するため、リンクのパスは最初にデータをつくた環境(ドライブ名など)で保存されてしまいます。 そうすると、他のMacでDoropboxにあるデータを開いた時、当然環境が違うため、開くた びにリンク元ファイルを変更しなくてはなりません。 これを解決するために「相対パス」でリンクを指定したいのですが、どうしてもやり方が わかりません。 強制的に「相対パス」に変換する関数とかあるのでしょうか? よろしくお願いいたします。

  • 絶対パスから相対パスへ

    HPビルダーを使ってHPを作っています。 この度、サーバの方にFTPを使いサイトを 転送したのですが、一部サイト内からサイト内に 飛ぶ際にURLが絶対指定になっていて飛ぶ事が できませんでした。そこで絶対パスから相対パス への変更方法が載っているページをIBMのページで 見つけたのですが、意味が分かりませんでした。 この際、幾つかの絶対パスを相対パスに変更する 作業は一つ一つしなければならないのですか? それと変更する際の具体的手順を詳しく教えて いただきたいです。

  • エクセルのファイルオープン時の指定ファイル名について

    環境:Win2000 VB.NET2003 参照:Microsoft Excel 9.0 Object Library エクセルファイルを開くために、Workbooks.Openを使用していますが、引数にフルパスを指定すると正常にオープンできるのですが、相対パスを指定するとファイルが見つからずに開けないというエラーになってしまいます。 Workbooks.Openでは相対パスは指定できないのでしょうか?それとも、何か他の指定が合わせて必要なのでしょうか? 教えてください、よろしくお願いします。

  • エクセルVBAで相対パスでファイルを読み込めない

    こんにちは。 標題の通りです。 現在、エクセルのVBAを使用してちょっとしたものを作成しているのですが、 相対パスを使用して他のファイル(DATファイル)を読みこませようとしています。 しかし、どうにもうまくいかなかったのです。 最初は問題なく読み込めていましたが、あるとき突然パスが見つかりませんとの エラーメッセージが出るようになりました。 結局、開いているブックの絶対パスを取得するという方法にして思っている結果 は得られることができましたが、どうにも不思議なので質問しました。 コードは以下のように記述していました。 Open "..\ディレクトリ\ファイル.dat" For Input As #1 上記ではだめなのでしょうか? VBでは問題なかったような気がします。

  • ハイパーリンクの相対パスが絶対パスに

    Word2002でホームページを作成しては、サーバーにアップロードしています。OSはXPです。これまで何の問題もなく使えたのですが、ここ数日、相対パスのハイパーリンクが、勝手に絶対パスになってしまいます。 自分はHPで多数のリンクを張るのですが、それらを最初から入力していては面倒なので、既に作ってあるハイパーリンクをコピペし、修正する、というやり方をしています。これまで、それで問題はなかったのですが・・・。つい先日、アップロードしたHPを観覧中、リンクをクリックしたところ、何の反応もありませんでした。ステータスバーのアドレスをふと見たら、アドレスが自分のパソコン上での絶対パスになっていました(C:\・・・)。これではリンクをクリックしても何の反応もないのは当然です。自分のパソコンにあるHPを開いて、リンクを確認したところ、アドレスが絶対パスになっていました。おかしいと思って試しに既に張ってあったハイパーリンク(アドレスは相対パスで../で始まる)をコピペし、アドレスを確認すると、絶対パス(アドレスがC:\で始まる)になってしまいます。「../」だけを他のハイパーリンクからコピペして直せばこれまでどおりになりますが、上述したように自分の場合ハイパーリンクをコピベすることが多いので、コピペする度に絶対パスを相対パスに直すのは面倒ですし、そもそもこれまでそういったことをする必要がなかったのになぜ今更そういう設定になったのか、分かりません。相対パスのアドレスを、コピペしても相対アドレスのままにする設定に戻すことはできないのでしょうか。

  • サイトルート相対パスと絶対パスのメリット・デメリット

    サイトルート相対パスと絶対パスのメリット・デメリット htmlでサイト内リンクを指定する際、 /test/test.html というサイトルート相対パスで指定する場合と、 http://example.com/test/test.html という絶対パスで指定する場合、 それぞれのメリット・デメリットはどういったものがあるでしょうか? ドメインは絶対に変更されないという前提の場合です。 絶対パスの方が重くなるなどのデメリットはありますか?

  • 相対パスから絶対パスの取得

    相対パスを指定することにより、絶対パスを取得したいのですが・・・。 どうすればいいでしょうか? ■状況■ VB6.0 Windows2000 ひとつ上の階層に行きそこのTableフォルダ内のsample.htmlのパスを取得したい。 Dir$("..\Table\sample.html")としてみたのですができませんでした。

専門家に質問してみよう