アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAでLAN内のフォルダに格納されているファイルを開く処理を行いたいのですが、
エラーが出ます。(下記参照)


実行時エラー'462'
リモートサーバーがないか、使用できる状態ではありません。


詳細ですが、
Excel2000をベースにWord2000を組合せてマクロを組んでいます。
まずExcelでシート内のファイル名とそのフォルダを指定してやり、
そのフォルダにある該当する名前のWord2000ファイルを
開いて印刷、そして一旦閉じるという処理です。
これをファイルやフォルダを変えてExcelのリストにある
全てのファイルを順々に印刷させていきたいのです。


ループ処理で順々に開いて印刷、そして閉じる為、
そのファイルが格納されているフォルダのディレクトリを
一回一回 ChangeFileOpenDirectory で指定することになります。
ループ処理の1回目はうまくいきました。
しかし、2回目からが上記のエラーが出て進みません。
最初からマクロを起動し直すと、やはり1回目のループだけ
うまくいきます。
ヘルプでも詳しく解説されていないので、参っています。

分かりにくい部分は補足しますので、
お力を貸して下さい。

A 回答 (3件)

Excel VBA で Word ファイルを開いてる?


それとも逆ですか?

コードを提示して下さい。それを見ないことには
何とも言えません。
    • good
    • 1

こんばんは。

KenKen_SP です。

#1 の後、何となく思いあたったので取り合えず投稿してみます。

Word VBA の MSDN ライブラリを見て。

[参考URL引用] ChangeFileOpenDirectory メソッド
メモ ユーザーが [ファイルを開く] ダイアログ ボックスでフォルダを変更
するか、Word の現在のセッションが終了するまで、指定したフォルダから
文書が検索されます。

この辺の内容に思い当たりますか?
もう一つ。

Document.Open Filename:=ファイル名

でファイル名にはフルパスが使えます。ChangeFileOpenDirectory メソッド
を止めて Open メソッドにフルパスを渡す方法に変えてみては?

参考URL:http://msdn.microsoft.com/library/ja/default.asp …
    • good
    • 0

連続でスミマセン。

さらにもう一つ。

[OFF2003] [INFO] Visual Basic の事前バインディングを使用すると、
Office オートメーションでエラーまたは予期しない現象が発生する
http://support.microsoft.com/kb/319832/ja

このページ内の下記内容。

・ "エラー 462" または "エラー -2147417848" :
Quit メソッドを呼び出すなどして既に終了している Office インスタンス
に対して、修飾されていないメソッドを使用しています。

実行するたびに Office アプリケーションの新しいインスタンスを作成する
ように記述されたコードは、通常はタスクが終了するとインスタンスを閉じ
ます。このコードを次に実行すると、修飾されていない呼び出しは失敗しま
す。Visual Basic は直前のインスタンスを呼び出しますが、リモート サー
バーはアンロードされています。

多分これかな? どこが原因なのかはコードを見ないとわかりませんが。
    • good
    • 0
この回答へのお礼

お騒がせしました。解決しました!

”修飾”などを確認している最中にハッとしました。

For文でループさせて、その
最後(ループ内)にQuitがあるのですが、
参考URLのサンプルを元にさせてもらいますが、

Set oXL = New Excel.Application
oXL.Visible = True

の部分がループに入る前、つまりループ外にいました。
気付くと単純なミスですね。
Setも色々例文を探しまくって転記したような感じがあり、
完全に理解出来ないまま使っていたのも原因です。
だんだんと分かってきました。

ありがとうございました。

お礼日時:2006/10/06 23:35

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