ここから本文です

UWSCについての質問です。

rig********さん

2018/7/1909:49:26

UWSCについての質問です。

現在、あるエクセルを開いて、開いたエクセルのシート名を全て取得し、メモ帳へ書き込んで保存→そのエクセルを元にシート名を1行ずつ引っ張ってきてシートをアクティブにし、条件に合致すれば印刷、しなければ次のシートへ移動し、最後のシートのチェックが完了したらエクセルを閉じて、また次のエクセルを開いて同じ作業をするというものを組んでいます。

その中のエクセルシート名をすべて取得という箇所で以下のコードを使用していて1回目はうまく動作するのですが、2回目が動作せず原因がわかりません。
2回目はo_XL.WorkBooks.Countが0になってしまっているのがすすまない原因のようですがなぜ0になるのかわかりません。

Dim o_XL = GetActiveOleObj("Excel.Application")
Dim i, k, o_WB, o_WS, Text
For i = 1 To o_XL.WorkBooks.Count
o_WB = o_XL.WorkBooks(i)
For k = 1 To o_WB.WorkSheets.Count
o_WS = o_WB.WorkSheets(k)
Text = Text + o_WS.Name + "<#CR>"
Next
Next

ご教示の程、宜しくお願い致します。

閲覧数:
55
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

por********さん

2018/7/2221:26:48

こんにちは。
最後のnextの次に、msgbox(Text)を追加して、何回も実行してみました。

が、

再現しません。 コードの示しているとおりに、正しく実行しています。

主様、uwscのスクリプトコードは、問題ないです。

ブックを2でも、3つでも、1つでも、何度実行しても、正しく処理します

さて、主様の環境で確認してほしいことですが、「タスクマネージャー」を表示して、プロセスタブからexcelが、いくつあるのか、です。
つまり、エラーの挙動のときは、excelが複数ある場合ではないかなと。

スレッドが違っていて、開く事があるのですよ。エクセルの詳細設定でも、確認する必要のあることです。

質問した人からのコメント

2018/7/23 16:51:01

ご確認いただきありがとうございます。
おっしゃる通りエクセルのプロセスが複数ありました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる