• 締切済み

WSH(Excel出力)の同時実行数の制限

WSHでExcel出力処理を行っているのですが、 同時実行数が30を超えると、Excelが不安定になるようで、  Set objBook = objExcelApp.Workbooks.Open("C:\xxx\zzz.xls", 0, False) の行で、  エラー:WorkbooksクラスのOpenプロパティを取得できません。  コード:800A03EC  ソース: Microsost Office Excel というエラーが発生して異常終了してしまうのです。 同時実行数の上限など、また、それ以外の原因について、 ご存知の方がいらっしゃいましたら、コメント頂ければ幸いです。 ちなみに、同時実行数が30未満の場合は、正常終了するので、 コードの内容には、問題ないと思っております。 Excelのバージョンは、2003で、ファイルの構成は、 wsfファイル(yyy.wsf) vbsファイル(wsh_excel.vbs)の2ファイルを配置し、 以下のような形で、実行しています。 Set WshShell = Server.CreateObject("WScript.Shell") Set objBatch = WshShell.Exec(strCmd)  ※ strCmdには、以下のような値が設定されます。     cmd.exe wscript.exe "C:\xxx\yyy.wsf" ■ yyy.wsfの内容 <?xml version="1.0" encoding="shift_jis" ?> <job id="zzz"> <script language="VBScript" src="wsh_excel.vbs"/> <script language="VBScript">  Call Excel_Main() </script> </job> ■ wsh_excel.vbsの内容(抜粋) Sub Excel_Main()  Set objExcelApp = Wscript.CreateObject("Excel.Application")  Set objBook = objExcelApp.Workbooks.Open("C:\xxx\zzz.xls", 0, False)     :     : End Sub

みんなの回答

  • super_neo
  • ベストアンサー率100% (1/1)
回答No.1

こんにちは。 >Set WshShell = Server.CreateObject("WScript.Shell") ここの部分に、直接エクセルappをcreateobjectするように してみたときに、どうなるのか、知らせて下さい。 30の数値は、ASPの中で制限できる部分かと思いますが、 もともと、マルチドキュメント仕様のエクセルアプリを、 スレッドで動作させるIISに使うのは、難しいかもしれませんね。

関連するQ&A

  • ExcelのマクロをWSHから実行させると「型が一致しません」のエラーがでます。

    WSHからExcel2000のマクロを実行させています。このマクロはセルの計算式の結果(セル(1,2))をif関数で比較するコードが入っています。 If Cells(1, 2).Value = "8月" Then hensu = 1 End If これをWSHから実行させると「型が一致しません」とエラーが出ます。 Debug.Print TypeName(Cells(1,2).Value)で型を表示させてみるとマクロを直接実行させたときはStringですが、WSHから実行させるとErrorとなっています。 なぜWSHから実行すると型がErrorとなるのかということと、解決策を教えていただければ幸いです。 ちなみにWSHでマクロを実行させている部分は以下のとおりです。 Set objExcelApp = CreateObject("Excel.Application") Set objWbk = objExcelApp.Workbooks.Open("ExcelBook.xls",True) objExcelApp.Run("ExcelBook.xls!macro1")

  • WSHスクリプトでブラウザ更新

    教えてください。 WSHスクリプトでブラウザの更新をF5ではなくてControl + Rしたいのです。 Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 2000 WshShell.AppActivate "テスト" WScript.Sleep 2000 WshShell.SendKeys "^R" WScript.Sleep 2000 WScript.Echo "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。

  • wsh で関数を指定して実行したい

    wsh について質問です。 cscript などを実行する際に 実行する関数を引数によって制御したいのですが、 そうするにはスクリプト内に引数で分岐して関数を呼び分けるコードを 記述するようなやりかたしかないのでしょうか? cscript(wscript) 自体には関数名を指定して それを実行する仕組みはないのでしょうか。 よろしくお願いします。

  • VBScriptでのExcelブックのプロパティ参照について

    VBScriptでのExcelブックのプロパティ参照について 先達のみなさまこんにちは。 VBScript(ExcelVBAではなく)を使って、Excelブック内のName (Excelで、[挿入]-[名前]-[定義...]で表示される一覧) を削除したいと思いコーディングしてみましたが、実行すると ブックのBuiltInプロパティを参照しようとする箇所で エラーとなってしまいます。 エラーメッセージは「オブジェクトでサポートされていない プロパティまたはメソッドです。:'objName.BuiltIn'」と 表示しています。 次のようなコードです。 *** Option Explicit Sub DelNames() Dim objArgs Dim objXls Dim objBook Dim objName Dim I Set objArgs = WScript.Arguments Set objXls = CreateObject("Excel.Application") Set objBook = objXls.ActiveWorkbook For I = 0 to objArgs.Count - 1 ' 引数内容確認 Wscript.Echo objArgs(I) objXls.Workbooks.Open objArgs(I) objXls.Visible = True For Each objName in objXls.ActiveWorkbook.Names If (objName.BuiltIn = True) Then objName.Delete End If Next Next Set objXls = Nothing Set objBook = Nothing Set objName = Nothing End Sub *** これをlesson03.vbsとして保存し、これを呼び出すwsfファイルを作成しました。 *** <job id = "DelNamesDD"> <script language = "VBScript" src = ".\lesson03.vbs"></script> <!-- Excel参照設定 --> <reference guid="{00020813-0000-0000-C000-000000000046}"></reference> <!-- メイン処理 --> <script language = "VBScript"> Option Explicit Call DelNames() </script> </job> *** たとえばこれをDelName.wsfとして保存し、DelName.wsfにExcelファイル(*.xls) をドラッグドロップして、「ビルトインではない」名前を削除させたい、と 考えたのです。 しかし、 If (objName.BuiltIn = True) Then の部分で上記のエラーとなってしまい、解決方法がわかりませんでした。 解決方法を教えていただきたくよろしくお願いいたします。 利用しているExcelのバージョンは2003(SP3)、WSHのバージョンは5.6 です。OSはWindows XP SP3です。 お手数をおかけしますが、よろしくお願い申し上げます。

  • vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうし

    vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうしてもわかりません。 他で見つけたスクリプトですが…。 Set obj = CreateObject("Excel.Application") Set WSHShell = CreateObject("Wscript.Shell") Set objWkBk = obj.Workbooks.Open("D:\TEST.xlsx") obj.ActiveWindow.SelectedSheets.PrintOut() obj.quit() Set obj = Nothing ご教授お願いいたします。

  • WSHで、レジストリを一気に消去したい

    VBスクリプトにて、WSHプログラミングを行っております。 レジストリを消去する場合、例えば Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegDelete ("消したいレジストリ") とプロプラミングするかと思いますが、 レジストリ1個ずつではなく、とあるフォルダ以下に含まれる、 全てのフォルダ及びレジストリを一気に消去したいと考えています。 (例えば、 "HKLN\SYSTEM\CurrentControlSet\Control\Class"の フォルダ以下に含まれる、フォルダ及びレジストリを 全て消去したい) このようなことを実現するには、VBSでどのようなコードを 書けばよいのでしょうか。ご教授よろしくお願いします。

  • スタートアップフォルダにエクセルファイルを入れてPC起動時の自動が実行可能ですか?

    現在 [メモ帳.vbs]ファイルとして、次のような記述のファイルをスタートアップフォルダに入れてあります。 Option Explicit 'オブジェクト変数の宣言とWshShellオブジェクトの作成。 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 10000 '10秒待機 '例としてメモ帳起動 objWshShell.Run "C:\Windows\System32\notepad.exe" これですと、notepad.exeファイルは自動実行されます。  しかし[エクセル.xlsm]というエクセルファイルを同様に単純にパスを通して[エクセル.vbs]ファイルを作成し、 スタートアップフォルダに入れてもエラーが出て実行されません。記述がわかる方いらっしゃったら、ぜひ教えててください。 お願いします

  • Runasの指定について

    お世話になります、runasの使用時にパスの指定の仕方について教えてください。 以下のようにパスを指定し、Runas後にスクリプトを実行しようとしていますが、objexeccmdの部分で引っかかってしまい、先に進むことが出来ません。 お手数ですが、よろしくお願いいたします。 objExecCmd = \"runas /user:Bunseki \\\"cscript.exe \\\\server\\\\log.wsf\" \'実行パスを記入 Set WshShell = WScript.CreateObject(\"WScript.Shell\") WshShell.run objExecCmd, 1, true

  • script(WSH)でExcelの右クリックメニューを表示するマクロについて

     以前、何でも質問箱で、Wendy02さんにWscript(WSH)の件で大変お世話になりありがとうございました。  今回、Excelで右クリックメニューが出ないトラブルがありましたので、ネットで検索し、右クリックメニュー表示マクロの実行と診断実行を行いましたが右クリックメニューがやはり出ません。  最後は、Excel12.xlbをリネイム(削除)するこことで解決しました。  つきましては、Windows-XP環境下で、script(WSH)を利用して下記のような「Excel右クリックメニュー表示.vbs」を作成できないでしょうか。  組み込む機能としては、下記の1.と2.と3.です。  1.は無理であれば手作業でできますから、2.と3.だけでもできると大変助かります。  ご教授宜しくお願い致します。 1.エクスプローラ(Ver5.1)の[フォルダオプション]→[表示]→   [すべてのファイルとフォルダを表示]を選択→[適用]→[OK] 2.「Excel右クリックメニュー表示.vbs」は、   「Excel右クリックメニュー表示.vbs ユーザID」のように   ユーザIDを指定して実行。 3.下記のようにリネイムする。 変更前:C:\Documents and Settings\ユーザID\Application Data\Microsoft\Excel\Excel12.xlb 変更後:C:\Documents and Settings\ユーザID\Application Data\Microsoft\Excel\OldExcel12.xlb ※トラブル対策としては、  ○「Excel12.xlb」が無かった場合は「Excel12.xlbファイルが    見つかりません」と表示し終了する。  ○「OldExcel12.xlb」がすでに存在していた場合は   「OldExcel12.xlb」を削除してからリネイムする。  ○「Excel12.xlb」をリネイムできなかった場合は「Excelを   終了してから実行してください」と表示し終了する。

  • wshからexcel操作で,ChDirを使いたい

    はじめて質問をします。  monnomestと申します。 vbaのマクロを実行して、シートを作成するwsh(by jscript)を作成しました。そのシートを保存する際にchrdirで保存場所を明示したいのですが、指定の仕方が分かりません。(wshを置いておくdirectoryにしたい。) ChDirは、エクセルのmethodではないため、以下のようでは、エラーになりますし、 var objXL = WScript.CreateObject("Excel.Application"); objXL.Visible = true; with(objXL){ var tar=workbooks.Open(scriptpath+vba); try{ Run("'"+vba+"'!'"+command+"'"); }catch(e){ } tar.Close(); ChDir("xxxxxxx"); ←  とは出来ない。 } もちろん、wshを使わず、vbaをそのまま立ち上げればこんなことする必要はないのですが、 諸々の事情がありまして、wshで行えれば都合がよいのです。 objectが何なのかが分かれば解決でしょうか。 どなたかご教示いただけますでしょうか。

専門家に質問してみよう