WSH(・∀・)スレッド! Part 2at TECH
WSH(・∀・)スレッド! Part 2 - 暇つぶし2ch900:デフォルトの名無しさん
08/04/05 04:37:18
よそでやれ

901:kuchigakusaiossan
08/04/06 14:14:28
>>891 自己レスですぅ
誤った解釈は、URLリンク(www.happy2-island.com) はVBAじゃなくWSHのスクリプトそのもらしい。
URLリンク(www.atmarkit.co.jp)
から考えましたが
Wshスクリプトないでは wscriptは暗黙にオブジェクト化されそのまま参照可能である
VBAからはwscript そのもののオブジェクト化はエラーになる
Dim WSH
Set WSH = CreateObject("WScript") ← エラーになる
WSH標準オブジェクトはオブジェクト化できる
Dim WSH
Set WSH = CreateObject("WScript.shell")
WSH.Run ("sleep 3")
WSH.Run ("echo test")
  ↑ はOK sleep echo は意味ありませんが
以上の事で混乱していたみたいです
なぜVBAからWscriptのオブジェクト化ができないのか?回避策は?などは
誰か~~ 知ってる人おらんか。。。。。。 ヨロシク

902:デフォルトの名無しさん
08/04/06 14:30:59
だいたいそういうこと。
WScriptオブジェクトはwscprit.exe/cscript.exeがスクリプトへ与えるもので、
その大半はスクリプトを実行したときでいないと意味を成さない。

例えば、WScript.SleepならVBではWin32 APIのSleep関数を使えばいいという具合に別の方法がある。

903:デフォルトの名無しさん
08/04/06 16:24:34
スレ違い
【OLE】オートメーション総合スレ【ActiveX】
スレリンク(tech板)l5

904:デフォルトの名無しさん
08/04/06 16:33:35
ActiveScript絡みだしギリギリOKじゃね?
OLEオートメーションは一寸戻り過ぎだ。

905:デフォルトの名無しさん
08/04/06 17:12:55
>なぜVBAからWscriptのオブジェクト化ができないのか?

できるけど?

906:デフォルトの名無しさん
08/04/06 17:29:47
Set WScript=GetObject("WScript.exe")

907:デフォルトの名無しさん
08/04/06 17:38:31
WScript.exeをtlbimpした.NETアセンブリを作って、
それをregasmしてVBAから呼び出す。

908:デフォルトの名無しさん
08/04/06 20:34:49
なぜWSHからVBAの関数やステートメントが呼べないのか?回避策は?などは
誰か~~ 知ってる人おらんか。。。。。。 ヨロシク

909:デフォルトの名無しさん
08/04/06 20:56:36
VBAは外部に公開されていないし、ステートメントは論外だろ。
よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。

910:デフォルトの名無しさん
08/04/07 02:23:47
>>905

どうやって作るのかコーディング例希望

ちなみに  >>906 は excel2003VBA では 「オートメーションエラーです」になる。なにかおまじないが必要なら
ご教授ねがいたい。くれぐれも実際に動作する説明でお願いしたい。






911:デフォルトの名無しさん
08/04/07 02:37:28
>>908>>909
回避策でよいなら、Office経由で可能では?
WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にVBAのコード
動的に登録して実行すればよい
とはいっても最近ではセキュリティの関係でOfficeの外部からVBAコード操作するとエラーになるけど、
これについては設定変えればいけると思う(たぶん)


912:デフォルトの名無しさん
08/04/07 17:19:56
>>910
WScriptは外部に公開されていないし、CreateObjectは論外だろ。
よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。




913:デフォルトの名無しさん
08/04/07 17:22:25
>>910
回避策でよいなら、Office経由で可能では?
WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にWScriptのオブジェクトを
動的に登録して参照すればよい


914:デフォルトの名無しさん
08/04/07 17:27:23
>>908
Excel.Application.Run (Excel2002以降は不可)
Access.Application.Eval (関数のみ)
FoxPro...

915:デフォルトの名無しさん
08/04/09 23:05:58
htaなんて便利なものがあるのを初めて知った。
まだpowershellはいいや。

916:デフォルトの名無しさん
08/04/10 12:25:35
すれっち

917:デフォルトの名無しさん
08/04/10 22:06:04
Set WSH = CreateObject("ほげほげ")
は、
Set WSH = WScript.CreateObject("ほげほげ")
の WScript を省略したもの。WScript はデフォルトで用意されているから。

>>901 Set WSH = CreateObject("WScript") ← エラーになる

これを長く書くと、こうなる。
Set WSH = WScript.CreateObject("WScript")

なんか変だよね。

918:デフォルトの名無しさん
08/04/10 22:11:34
> Set WSH = CreateObject("ほげほげ")
> は、
> Set WSH = WScript.CreateObject("ほげほげ")
> の WScript を省略したもの。WScript はデフォルトで用意されているから。
違うよ

CreateObjectはVBSのグローバル関数(メソッド)
> CreateObject(servername.typename [, location])

WScript.CreateObjectはWSH(WScriptオブジェクト)の関数(メソッド)
> object.CreateObject(strProgID[,strPrefix])

動作は似てるが引数(得に第二引数)の内容も違う

919:デフォルトの名無しさん
08/04/10 22:41:44
違うよ ここでは

CreateObjectはVBAのグローバル関数(メソッド)

WScript.CreateObjectはWSH(WScriptオブジェクト)の関数(メソッド)
なのでVBAでは使えない

ちなみにWSHでは
Set WSH=
はエラー


920:デフォルトの名無しさん
08/04/11 01:14:52
ADOでExcelに接続してワークシートをテーブルに見立ててクエリ投げる、ってのあるじゃないですか、
Excelが2000・2002(XP)・2003の環境だと問題ないんだけど、今日同じソースでExcel2007で初めて動かしたら
ADO接続のところでエラーになった。 もしてかして2007ってこれ使えない?


921:デフォルトの名無しさん
08/04/11 10:18:52
当然

922:デフォルトの名無しさん
08/04/11 12:33:43
>>921
こういうレスって2007使ってない奴には何が当然かさっぱりわからんわな。

923:デフォルトの名無しさん
08/04/11 18:31:53
>>921
thx!

924:デフォルトの名無しさん
08/04/11 21:49:08
>>922 kwsk

925:デフォルトの名無しさん
08/04/11 22:08:45
>>919
ここでは、って言われても・・・
ここはWSHのスレだろ?VBAのスレじゃ無いよ。

926:デフォルトの名無しさん
08/04/11 23:34:51
質問文の日本語を読めなかったの?

927:デフォルトの名無しさん
08/04/12 01:45:37
質問文の日本語を読めば、ここがVBAスレに変身するのか?

928:デフォルトの名無しさん
08/04/12 11:20:49
ここがWSHスレだから、元レスがWSHの質問文に変身したというのか?

929:デフォルトの名無しさん
08/04/12 14:12:30
>>910
WScript.exe /register

930:デフォルトの名無しさん
08/04/12 14:18:02
regsvr32 WScript.exe

931:デフォルトの名無しさん
08/04/12 16:38:59
>>910
WSC作って
Set WScript=GetObject("script:WScript.wsc")

932:デフォルトの名無しさん
08/04/12 17:01:40
>>929-930
こういう小学生的なレスの意味は?

933:デフォルトの名無しさん
08/04/12 17:12:27
他人の人生の意味なんか考えてても人生の無駄だぜ

934:デフォルトの名無しさん
08/04/12 21:05:43
他人が以下に自分より劣ってるかというのは重要だぜ

935:デフォルトの名無しさん
08/04/12 21:14:35
他人が恥を晒しているのが見れるのは重要だぜ

936:デフォルトの名無しさん
08/04/13 00:56:49
>>932
レベルを相手に合わせてるんじゃないの?

937:デフォルトの名無しさん
08/04/13 01:08:50
そう思ってるのは本人だけ。

938:kuchigakusaiossan
08/04/13 13:15:30
WSHのソース作成&デバッグってみなさんどうしてるの?
vbs をダブルクリック等で起動するようなスクリプトを
VB(A)と同じようようなデバッグ環境でデバッグできますか?

excel2003の Script Editor が使えるのかなと動かしてみたが
これはWEBのVBS用なのかな。。?
スッテップイン させてもブラウザが動いてステップしないし

ぐぐるとWSHではそのままでは動かないような事もでてくるし
URLリンク(www.sio.no-ip.com)

イミディエィトウィンドウがないみたいだし

エクセルVBAで書いてるソフト(自己使用)のメイン部分をWSHにしてエクセルから外にだそうと
考えていいますが、すなおに VB(Visual studio ?)にでもしたほうがいいのかな。。。

よろしく~~~~~~

939:デフォルトの名無しさん
08/04/13 13:26:29
Msgbox デバックだろ。常考。

940:デフォルトの名無しさん
08/04/13 13:32:17
VisualStudio持ってるけど、VBS相手に使ったことないなぁ~

使ってる/使ったことあるひと教えて~

941:デフォルトの名無しさん
08/04/13 13:39:34
wscript //?

942:デフォルトの名無しさん
08/04/14 02:35:34
VisualStudio 2005 Enterprise Edition は
コード補間のできるVBSエディタとして使ってるけど
デバッグは MsgBox や Wscript.Echo だな。
これは VBS に限らず、すべてのプログラミング言語に共通する
基本中の基本だな。

943:デフォルトの名無しさん
08/04/14 08:30:01
MSがscript debugger とかいうの配布してなかったっけ?
おれもmsgboxデバッグ派だけど。

944:デフォルトの名無しさん
08/04/14 11:36:24
デバッガ使うよりメッセージ出力のほうがいい理由って何?

945:デフォルトの名無しさん
08/04/14 12:27:54
デバッガがある環境は限られるが、メッセージ出力はメモ帳があれば追記できる。

946:デフォルトの名無しさん
08/04/14 14:31:09
ScriptDebugger って生VBSで使えたんだっけ?
たしかIEのオプション(?)でASPとか向けだった気がするんだけど。

947:デフォルトの名無しさん
08/04/14 16:00:59
>>941

948:デフォルトの名無しさん
08/04/15 01:00:37
VisualStudio だとVBSのステップ実行できないし変数ウォッチできないだろ

949:デフォルトの名無しさん
08/04/15 01:09:09
つまりScriptDebuggerならステップ実行&変数ウォッチができるってこと?

950:デフォルトの名無しさん
08/04/15 07:44:18
>948 できないよ

951:デフォルトの名無しさん
08/04/15 08:34:13
そのdebuggerってフリーなの?

952:デフォルトの名無しさん
08/04/15 12:58:30
WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で
かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。
これほど使いづらい言語はお目にかかったことがない。

953:デフォルトの名無しさん
08/04/15 13:23:32
>WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で
>かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。

自分の無知を言語のせいにする典型だなw

954:デフォルトの名無しさん
08/04/15 13:57:29
言語を使いこなせない狐が酸っぱい葡萄と言うんだって?

955:デフォルトの名無しさん
08/04/15 14:33:46
WSHでAPI呼べるの?

956:デフォルトの名無しさん
08/04/15 14:40:28
そういうCOM使って呼べる

957:デフォルトの名無しさん
08/04/15 14:44:20
>>955
WSHでもAPIは呼べるよ
ActiveXって種類のAPIなら直接ね
そしてWin32APIって種類のAPIはActiveXから呼べるので
結果WSHからWin32APIを呼ぶことも可能

958:デフォルトの名無しさん
08/04/15 14:47:25
よーするに呼べないってことですね。

959:デフォルトの名無しさん
08/04/15 14:53:11
馬鹿には呼べないってことですね。


960:デフォルトの名無しさん
08/04/15 14:56:35
vbaは外部コマンドも呼びづらくパイプ処理も面倒で

961:デフォルトの名無しさん
08/04/15 15:20:27
言語仕様もひどいもんだしな

962:デフォルトの名無しさん
08/04/15 15:24:15
>ステップ実行

1行ごとにStop文

963:デフォルトの名無しさん
08/04/15 20:40:33
>外部コマンドも呼びづらくパイプ処理も面倒

なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの

964:デフォルトの名無しさん
08/04/15 22:25:44
COM作れるんだったらそっちの開発環境で完結すればいいんじゃね
なにもWSHなんぞ使わんでも

965:デフォルトの名無しさん
08/04/15 22:36:02
MSに文句を言ってるんだと思った

966:デフォルトの名無しさん
08/04/16 14:40:24
>なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの

だれか作って

コンソールを非表示にできる
StdOut/StdErrにデータがあるかブロックしないで調べられる/取り出せる
できればStdInにreadが掛かってるか分かる

967:デフォルトの名無しさん
08/04/16 14:42:39
WSHにのってるまともなスクリプト使えば一瞬で解決だろ

968:デフォルトの名無しさん
08/04/16 14:53:31
追加
AppActivateでなくFindWindowどまりの機能
SendMessageもついでに

969:デフォルトの名無しさん
08/04/16 21:02:45
>>952

970:デフォルトの名無しさん
08/04/16 21:05:45
COMに手を出す時点で、WSHに拘る理由がなくなるな。
そのまま他言語で書いた方が早い。

971:デフォルトの名無しさん
08/04/16 21:37:36
一時的に目的を達成するだけならね

しかしそういう状況のみではないんだよ
もっと視野を広く持とう

972:970
08/04/16 22:00:06
むしろ、WSHに拘っている方が視野が狭いと思ったわけで。
>>966>>968程度の機能でいちいちCOMコンポーネント書いて、
使うPC毎にいちいちregsvrして、って唯のギャグだろ。

973:デフォルトの名無しさん
08/04/16 22:12:48
そうでもないか

974:デフォルトの名無しさん
08/04/16 23:38:14
>>972
そうそう。
だから、WSH付属のコンポーネントがもっと高機能だったらよかったのにと思う。

975:デフォルトの名無しさん
08/04/17 09:25:24
何故自分にレス?

976:デフォルトの名無しさん
08/04/17 13:27:53
自意識過剰w

977:デフォルトの名無しさん
08/04/19 09:49:46
オプションって//じゃなくて/でもいいの?
1つでも動くっぽいんだけど
cscript /nologo xxxxxxxxxxx
って感じで


978:デフォルトの名無しさん
08/04/19 11:38:38
おk

979:デフォルトの名無しさん
08/04/19 13:49:30
/と//になんか違いはあるの?

980:デフォルトの名無しさん
08/04/19 15:53:43
スクリプトのファイル名の後にオプションを記述するときは
//でなければならない。

981:デフォルトの名無しさん
08/04/19 16:28:44
へー

982:デフォルトの名無しさん
08/04/19 17:07:02
cscript -nologo xxxxxxxxxxx
でもよい

983:デフォルトの名無しさん
08/04/19 18:05:11
どうでもよい


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch