[[20210423124612]] 『リモート サーバーがないか、使用できる状態ではax(ゆうゆう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リモート サーバーがないか、使用できる状態ではありません』(ゆうゆう)

行き詰っており、初めて投稿します。
一応検索したのですが、同じ現象の人はいないようだったので、投稿します。
何か間違えていたらすみません。

<やりたいこと>
エクセルのVBAを使用して、Cドライブ直下にある複数のWord文書を順番に取得し、文書を開きたい。

<現象>
1文書目は正常に動くのだが、2文書目にいきなりエラーが発生してしまう。

<設定>
ツール→参照設定→参照可能なライブラリファイル(A)
「Microsoft Word 14.0 Object Library」にチェック

<コード>
dim fpath as String
dim fname as String
dim fs, f1, fc
dim wobj as New Word.Application
dim wdoc as Word.Document

fpath = "C:\"

set fs = CreateObject("Scripting.FileSystemObject")
set f = fs.GetFolder(fpath)
set fc = f.Files
set fs = Nothing

For Each f1 In fc

 fname = f1.Name
'↓ここでエラー
 wobj.documents.open fpath & fname
 wobj.documents.close
 wobj.Quit

Next

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

<調査結果>
ネットで調べたところ、「CreateObjectしたものを解放(?)した方が良い」というのを読んだので、
その記事にあったように「set fs = Nothing」を追記しましたが、同じエラーで解決しませんでした。

なかなか解決策のないエラーのようなのですが、
これができるようになったら業務が格段に楽になるため、諦めきれません。
この先もまだ文書内をある言葉で検索したりなど、
やりたいことがあるのですが、最初でつまずいてしまいました。

何か解決策をご存じの方などいらっしゃったら、ご教示ください。
よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 ぱっと見ですが、[wobj]って変数を宣言しただけで、そのあとに何もセットしていないのが問題なのでは?
 たぶん、Set wobj = New Word.Application とかしてあげれば動くのではないかと…詳しくないので"たぶん"ですが…(^^;

 そのうち詳しい方から回答付くと思うので、試してみて違っていたら忘れてください…汗
(虎) 2021/04/23(金) 13:02

虎さん

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

確かに!Setしてないじゃん!
と思ってやってみたのですが、やはりだめでした・・・。

他にも何かありましたら、よろしくお願いいたします。
(ゆうゆう) 2021/04/23(金) 13:09


 ワード文書以外のファイルも開いちゃうからじゃないですか?
 エラーが発生したときの、fname を確認してください。
(´・ω・`) 2021/04/23(金) 13:32

(´・ω・`)さん

ありがとうございます。
実は、「Cドライブの直下」ではなく、「C:\xxx」フォルダの下となります。
そのフォルダには、Wordしか入っていません。

分かりやすくしようと思って逆に紛らわしい書き方をしてしまって、すみません。
因みに、デバッグもして、fnameにはちゃんとWordの文書が入っているのを確認しています。
(1文書目も2文書目も)

もし他に気づいたことがありましたら、よろしくお願いいたします。
(ゆうゆう) 2021/04/23(金) 14:21


 fname
の
先頭は \ とか / 
になっていますでせうか。。。^^;
fpath & fname
が実際のフルネーム[絶対パス]とおなじかどうかかなぁ?
m(__)m
(隠居じーさん) 2021/04/23(金) 14:31

 あ、必要なとこだけ抜粋すると

    Dim wobj As New Word.Application  ' ←Word アプリケーション作成

    For Each f1 In fc
       Set wdoc = wobj.documents.Open(fpath & fname) ' 1回目はOK 2回目は終了されている
       wobj.Quit ' ←Word アプリケーション終了
    Next

 なので、
 wobj.Quit
 をループの外に出しましょう
(´・ω・`) 2021/04/23(金) 14:36

 (隠居じーさん)2021/04/23(金) 14:31
は だめでしたら。お忘れ頂いて、
お詳しい方のアドバイスをお待ちください
わたしは、半分ボケかかつた、老人ですので。。。相済みません
m(__)m
(隠居じーさん) 2021/04/23(金) 14:41

隠居じーさんさん

ありがとうございます。

その点も何度も確認したのですが、ファイルパスは正しくなっていました。
以下のようにしているので、大丈夫です。

fpath = "C:\xxxx\"

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

今回初めてエクセルからワードを触りに行くコードを作りました。
同じOffice製品だし、バージョンも同じだし、同じVBAだし楽勝だろうと思っていたのに、
初っ端からこんなエラーが出るとは・・・という感じです。
(ゆうゆう) 2021/04/23(金) 14:43


(´・ω・`)さん

あ!ありがとうございます!
出来ました!

す、すみません、Quitの書き場所が間違っていたのですね・・・。
お恥ずかしい・・・。
「まさか製品の仕様(バグ)か!?」とか思っていたのにこんなアホな理由で恐縮です。

ご説明いただいてありがとうございます。
これで、先に進めます!

皆さんありがとうございました。
(ゆうゆう) 2021/04/23(金) 14:47


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.