VBAでLAN内のフォルダに格納されているファイルを開く処理がうまくいかないエラーの原因と解決方法

このQ&Aのポイント
  • VBAのChangeFileOpenDirectoryを使用してLAN内のフォルダに格納されているファイルを開く処理を行いたいが、エラーが出ることがある。
  • エラーの原因は、フォルダのディレクトリを二度目以降のループ処理で正しく指定できていないことにある。
  • 解決方法は、ループの各処理の前にChangeFileOpenDirectoryでフォルダのディレクトリを正しく指定することである。
回答を見る
  • ベストアンサー

VBAのChangeFileOpenDirectoryの部分がうまくいきません

VBAでLAN内のフォルダに格納されているファイルを開く処理を行いたいのですが、 エラーが出ます。(下記参照) 実行時エラー'462' リモートサーバーがないか、使用できる状態ではありません。 詳細ですが、 Excel2000をベースにWord2000を組合せてマクロを組んでいます。 まずExcelでシート内のファイル名とそのフォルダを指定してやり、 そのフォルダにある該当する名前のWord2000ファイルを 開いて印刷、そして一旦閉じるという処理です。 これをファイルやフォルダを変えてExcelのリストにある 全てのファイルを順々に印刷させていきたいのです。 ループ処理で順々に開いて印刷、そして閉じる為、 そのファイルが格納されているフォルダのディレクトリを 一回一回 ChangeFileOpenDirectory で指定することになります。 ループ処理の1回目はうまくいきました。 しかし、2回目からが上記のエラーが出て進みません。 最初からマクロを起動し直すと、やはり1回目のループだけ うまくいきます。 ヘルプでも詳しく解説されていないので、参っています。 分かりにくい部分は補足しますので、 お力を貸して下さい。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

連続でスミマセン。さらにもう一つ。 [OFF2003] [INFO] Visual Basic の事前バインディングを使用すると、 Office オートメーションでエラーまたは予期しない現象が発生する http://support.microsoft.com/kb/319832/ja このページ内の下記内容。 ・ "エラー 462" または "エラー -2147417848" : Quit メソッドを呼び出すなどして既に終了している Office インスタンス に対して、修飾されていないメソッドを使用しています。 実行するたびに Office アプリケーションの新しいインスタンスを作成する ように記述されたコードは、通常はタスクが終了するとインスタンスを閉じ ます。このコードを次に実行すると、修飾されていない呼び出しは失敗しま す。Visual Basic は直前のインスタンスを呼び出しますが、リモート サー バーはアンロードされています。 多分これかな? どこが原因なのかはコードを見ないとわかりませんが。

sakocchi
質問者

お礼

お騒がせしました。解決しました! ”修飾”などを確認している最中にハッとしました。 For文でループさせて、その 最後(ループ内)にQuitがあるのですが、 参考URLのサンプルを元にさせてもらいますが、 Set oXL = New Excel.Application oXL.Visible = True の部分がループに入る前、つまりループ外にいました。 気付くと単純なミスですね。 Setも色々例文を探しまくって転記したような感じがあり、 完全に理解出来ないまま使っていたのも原因です。 だんだんと分かってきました。 ありがとうございました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。KenKen_SP です。 #1 の後、何となく思いあたったので取り合えず投稿してみます。 Word VBA の MSDN ライブラリを見て。 [参考URL引用] ChangeFileOpenDirectory メソッド メモ ユーザーが [ファイルを開く] ダイアログ ボックスでフォルダを変更 するか、Word の現在のセッションが終了するまで、指定したフォルダから 文書が検索されます。 この辺の内容に思い当たりますか? もう一つ。 Document.Open Filename:=ファイル名 でファイル名にはフルパスが使えます。ChangeFileOpenDirectory メソッド を止めて Open メソッドにフルパスを渡す方法に変えてみては?

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/womthChangeFileOpenDirectory1.asp
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

Excel VBA で Word ファイルを開いてる? それとも逆ですか? コードを提示して下さい。それを見ないことには 何とも言えません。

関連するQ&A

  • VBAにて

    初めまして、宜しくお願いします。 エクセルのVBAの処理を最近やり始めたのですが、私には ハードルが高くて、よく解りません。。。 出来るのかも解らないのですが、それもふまえて教えて いただけると助かります。 A列:名称 B列:概要 C列:ファイル名 D列:フォルダ構成 のエクセルファイルがあります。 各列ともに、何行にも渡りデータが格納されております。 これを読み込んで、ローカルにある指定のエクセルファイル(シート) をD列にある、C列のファイルに全てコピーしていきたいのです。 そのかたわらで1行ずつの処理結果を、ログに出力していくような 感じにしたいのですけど出来ますか?? 教えて下さい。 あと、もし可能であればフォルダがネットワーク上にあっても 可能なのか知りたいです。 宜しくお願いします。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • カレントディレクトリにあるExcelファイルを全て開く

    Excelのマクロ機能などを利用してカレントディレクトリ(というかマクロを実行するファイルが格納されたフォルダ)内のその他のExcelファイルを全て開かせるにはどうすればよいでしょうか?フォルダ名の指定はせず、実行するファイルを移動しても動作するようにしたいです。

  • VBもしくは、VBAでのメモ帳の起動

    こんにちは。 VBもしくはVBAというプログラミングでメモ帳を開きたいのですが、WORD等のようにマクロの記録やVBAがありません。 行いたいことは、特定のフォルダーに入っている複数の既存のメモ帳を、OUTLOOKに入れたいのですが、VBAのサイトを探してもOUTLOOKのVBAというのがあまりありません。 WORDのマクロでWORDに貼り付けるのでも良いのですが、既存の複数のメモ帳を開いて、WORDなどには入れられないでしょうか? 自分で試行錯誤した限りでは、メモ帳単体のパスを指定すれば出来たのですが、EXCELのbook1、book2のように不特定のファイルを順番に開きたいと思っています。 使っているのは、WINDOWS XPとOFFICE XPです。 どなたか、お知恵を貸してください。 よろしくお願いします。 aki

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

  • ループマクロ起動時に他のエクセルファイルが起動できない

    VBAでメインループをずっとループさせ、 データが送られてきたらそれを受け取り処理をするマクロを作っています。 Do DoEvents Sleep 1 データが送られてきていれば処理 Loop という風にしているのですが、このマクロを起動中だと他のエクセルファイルが開けないのです。 他のファイルをダブルクリックしても、起動中のこのマクロのエクセルが前面にくるだけです。 なにか特別な処理をループ中にいれなければならないのでしょうか?

  • VBAでのHTTP通信を用いたダウンロード

    質問です。 現在、AccessのVBAを用いて、とあるサイトのとあるファイルを定期的にダウンロードするプログラムを開発中です。 ・仕様 固定URLに設置されている「lzh」のファイルをクライアントマシンの指定したディレクトリへダウンロードし、格納する。 ・処理概要 1 受信元URL("http://○○/△△.lzh")を指定 2 格納ディレクトリ("D:\file\"等)を指定 3 URLにあるファイルを格納ディレクトリへダウンロードする。 ・備考 フリーウェア等は使用禁止。Access単体のみで動作することを限定します。 具体的な実装方法、もしくはヒントや、参考になるサイトなどをご存知でしたら、ご指導をお願いいたします。 以上です。

  • エクセルVBAでVBAの修正は出来るのでしょうか?

    エクセルVBAでVBAの修正は出来るのでしょうか? あるエクセルファイルにマクロを組み込んでいます(ユーザーフォームも使用)。 このエクセルファイルを複数個フォルダ内にコピーしています。 このコピーした全てのファイルのマクロの修正をVBAで出来ないかと考えています。 修正箇所はモジュール内のコード修正、モジュールの追加、既存のユーザーフォームにボタン等の追加等です。 エクセルは2003を使用しています。 どなたか教えてください。

  • エクセルVBAからのファイル操作コントロール

     いつもお世話になっております。  エクセル97を使用しています。 VBAでマクロを組む際、処理中で名前の判っているテキストファイル(拡張子txt)を退避させたいケースが発生しました。  単純にあるフォルダから、あるフォルダにコピーをとっておくだけなのですが、エクセルのVBAからコントロール出来るのでしょうか?  出来るなら、どう記述すれば良いか、ご指導願います。  よろしくお願い致します。

専門家に質問してみよう