1 名前:デフォルトの名無しさん [2007/04/16(月) 13:48:54 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ ●関連スレ お前ら、wsh使ってますか? part6 pc11.2ch.net/test/read.cgi/win/1155040873/ 【イケメン】阿龍スレ避難所@自己紹介【彼女募集中!】 life8.2ch.net/test/read.cgi/intro/1171897814/ ●個人サイト Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php 音楽 winscript.mine.nu/music/ キャラネタ板・なな板のための何か charaneta.mine.nu/
805 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:22:37 ] WSHはオートメーションオブジェクトの操作がメインだったりする。 他のアプリの制御はアウトプロセスサーバとして制御してくれ、って方針。 Perlが標準入出力の扱いに最適化されているように、 ATKはGUIアプリの操作シミュレートによる制御に最適化されている、と。 ATKはWMIの制御やりにくいから糞、とか言われても困るだろ?
806 名前:797 mailto:sage [2008/02/24(日) 17:52:35 ] >>805 1行目、2行目、5行目の貴方の言っている事がスキルの低い私には理解できません・・・。 意味が分からないです・・・。すみません。
807 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:56:37 ] 操作自動化の方法論が違うから総合的な比較はできないってこと GUI操作のシミュレートならそりゃそれように作られたもの使うのが当然 WSHはそういう用には作られてないもの
808 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:06:30 ] >それと .SendKeysメソッド。日本語を送信できないなんて論外です。 日本語が送れるVBのSendKeysと送れないVBSのSendKeysは、 仕組み上でどういう違いがあるのでしょうか?
809 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:13:14 ] 直接Win32API呼び出してるかどうかじゃね
810 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:15:12 ] Win32API呼び出さないで、SendKeys作れるの?
811 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:22:31 ] つかってるAPIがちがうんだろ
812 名前:802 mailto:sage [2008/02/24(日) 21:37:27 ] >>804 WSHというのは、スクリプト言語からWindows操作をする為の手段(WSHオブジェクト) の提供と、そのスクリプト言語をデフォルトではVBScriptとJScriptを内包している。 君の比較しているのはVBScriptのようだけど、これは>>805 の言っている通り WSH以外のオブジェクトにもアクセスできる。例えば、IEやEXCEL、WMI....etc こういう事はAHKでは、どうやるの? というか、よく見たら>>807 が結論出してるね。 GUI操作だけで比較したら、その機能に特化しているAHKが優れているが、 それは総合的な比較じゃないでしょ。理解できた?
813 名前:797 mailto:sage [2008/02/24(日) 23:23:04 ] >>812 なるほど、適材適所でWSHもWSHが得意な場面で使えばAHKより使い勝手いいんだ・・・。
814 名前:デフォルトの名無しさん [2008/02/24(日) 23:59:03 ] 質問させてください。 ファイルが書き込み不能かどうかを検出するにはどうすればよいでしょうか? リードオンリ属性ではなく、ファイルを削除するとき稀に出てくる 「ほかのプログラムが使用しているため削除できません」ってやつの状態です。
815 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:01:04 ] >>814 自己レス。 try仕込むだけでよかったのね orz
816 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:18:15 ] >>812 > こういう事はAHKでは、どうやるの? AHK用ActiveXモジュールを使えば良いだけ 逆にWSHでのポインティング操作などは そういう機能を提供するCOMを使えば良いだけ このレベルのことなら、やり易さに違いはあっても 結果的に"出来ること"ではWSHもAHKも大差ない ポインティング操作に限って言えば WSHは最初からWindowsに入っているが、ポインティング操作機能は後付けになる AHKはWindowsに対して後付けで入れないと使えないが、ポインティング操作は最初から備えてる ってだけの違い
817 名前:797 mailto:sage [2008/02/25(月) 02:18:45 ] >>816 なんか凄くお詳しいですね・・なるほど、参考になります。 構文とかの簡単さはどちらの方に軍配が上がりますか? 情報量の多さでいくと、WSHの方が色々なところで解説されているだろうし メジャーだと思います。 AHKはもっと普及してれば敷居低くなるのになぁと思ったり。
818 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:49:55 ] AHKS
819 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:15:26 ] FileSystemObjectのTextStreamオブジェクトのReadAllメソッドって サイズ0のテキストファイルに対して実行するとどうしてエラーになるのかよくわからん 長さ0の文字列返せばいいのに なんで? あとVB6でFileSystemObjectのGetParentFolderNameメソッドを使うと親フォルダ名のみだけど VBScriptだと親フォルダのフルパスが返ってくるけどこれもなんでだろ? 同じFileSystemObjectでもVB6が使ってるのは別物なの? なんで?
820 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:06:21 ] ReadやReadLineとの仕様の一貫性かも DLLは同じなの?
821 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:57:16 ] ReadAll()する前にAtEndOfStreamを調べなきゃならないようですね var ForReading = 1, ForWriting = 2; var Fso = new ActiveXObject("Scripting.FileSystemObject"); var f = Fso.OpenTextFile("null.txt", ForReading); if (! f.AtEndOfStream) WScript.StdOut.Write(f.ReadAll()); f.Close();
822 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:01:31 ] たぶん、めんどくさかったんだと思う
823 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:17:11 ] WindowsXP、つまり最新のWSH 5.6だと使えるメソッドでもWindows2000、つまりWSH 5.6未満だと 使えないメソッド(例えば Execメソッドとか・・・)やプロパティがありますよねぇ? それらを調べたいのですが、何を見ればそういうことがまとまって書かれてありますか? WSHのヘルプファイルを見てみたのですが、見つけきれませんでした。 やりたい事はWindows2000のWSHを5.6にバージョンアップせずにWindows2000でもXPでも 動作するスクリプトを書きたいのです。だから予めどのメソッドが動作しないとか、 引数が違うとかそういうことを把握しておきたいのです。
824 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:46:07 ] 5.6のヘルプのバージョン情報
825 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:47:24 ] ただし、障害は載ってないからなぁ
826 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 08:26:53 ] 最新は5.7よ
827 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:02:12 ] >やりたい事はWindows2000のWSHを5.6にバージョンアップせずにWindows2000でもXPでも >動作するスクリプトを書きたいのです。 いまさらやめとけ それに2.0じゃたいしたことはできねー
828 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:42:46 ] >>825 5.0と5.1の挙動の違いすら、5.6のヘルプのバージョン情報だけでは分からなかったからなぁ・・・
829 名前:デフォルトの名無しさん [2008/03/19(水) 11:24:42 ] 5.7なんてあったっけ
830 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:40:52 ] >>829 最近出た。Vistaに標準搭載で、上から2000, XP, 2003英語版がダウンロード可。 www.microsoft.com/downloads/details.aspx?FamilyID=c03d3e49-b40e-4ca1-a0c7-cc135ec4d2be&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=47809025-d896-482e-a0d6-524e7e844d81&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=f00cb8c0-32e9-411d-a896-f2cd5ef21eb4&DisplayLang=en
831 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:47:18 ] ちがいは?
832 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:21:19 ] 0.1
833 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:37:06 ] >>831 不具合修正・セキュリティパッチの統合もあるが、 JScriptで大量のオブジェクトが生成された時のGC高速化がメインかと。 dramaticallyとまで書かれているあたり、結構凄いのかもしれない。
834 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:20:03 ] Msxml2.XMLHTTPなんだけど readyState=2や3の時、status取得できる? 4にならないとエラーになるんだけどこれ普通? Msxml2.ServerXMLHTTPなら2や3でできるんだよね・・・ 最近IEがおかしくなってきてるので どっか壊れてるんだろうか・・・? XP SP2+IE6
835 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:32:37 ] IEとalertがとじれません><
836 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 02:02:27 ] すれちがい
837 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 02:09:26 ] IE.Quit
838 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:04:13 ] Exec("iexplore.exe").Terminate
839 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:42:24 ] >>775-776 これ、気になるんですけど…
840 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:59:25 ] どんまい
841 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:41:22 ] ん?検索すれば出てくるだろ?
842 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:05:52 ] >>841 あれがベストなのか?
843 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:10:55 ] .wsfに読み込む.vbsファイルの一部の関数を非公開にするのってどうやるの? .vbs内部だけで使える関数を作りたいんだけど・・・
844 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:13:42 ] できない 代替するなら wsc class かな
845 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:18:08 ] >>842 ベストなのを教えて
846 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:13:48 ] 無理言うな、それが出来れば質問しないだろ?
847 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:45:48 ] >>843 Sub xxx_aaa() とかで凌げ
848 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:02:50 ] エラーが起きたら即終了でダイアログが出ないようには どうすればよろしいでしょうか?
849 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:07:35 ] try { …… } catch (e) { WScript.Quit(); }
850 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:37:04 ] On Error Resume Next
851 名前:デフォルトの名無しさん mailto:age [2008/03/30(日) 02:51:51 ] アニメ「めぐみ」ダウンロードページ www.rachi.go.jp/jp/megumi/index.html#ja
852 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 04:16:32 ] >>850 は即終了しないだろ?
853 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:45:44 ] vbeはwsfでは読み込めないのか…
854 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:10:59 ] んなことはない
855 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:01:16 ] vbsをvbeにエンコードしてから、読み込む側のコードの読み込み部分を <script language="VBScript" src="./hoge.vbs" /> から <script language="VBScript" src="./hoge.vbe" /> のようにしたんだが、 エラー: ステートメントがありません。 ソース: Microsoft VBScript コンパイル エラー になってしまって、あきらめていた。"VBScript"の部分を適切なものに変更すればいいのか? wsfの説明を読んでも分からない…教えてください。
856 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:02:55 ] VBScript.Encode
857 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:06:38 ] >>850 Try ... Catch ex As Exception WScript.Quit End Try
858 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 17:10:18 ] で、できた。今までできないと思っていたのに… いろいろ実験に使っていたファイルを使ってやってみたんですが、 vbeファイルの中にPrivate Subと宣言した関数(実験なのでそのままPrivateSubという名前) を使おうとすると エラー: 型が一致しません。: 'PrivateSub' ソース: Microsoft VBScript 実行時エラー となるんですが、これはたまたまですかね?それともPrivateの効果なのか・・・ vbsを読み込んでいた時はエラーは起こらなかったんですが。
859 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:49:01 ] >>848 //B
860 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:10:00 ] >>858 君は>>843 かな? Private(Public)宣言はオブジェクト(クラス)外に公開するか否かの宣言なので インクルード(wsfのscript要素のsrc属性指定)した場合は関係ないよ きっと偶々というよりプロシージャ名間違い等、君のミスだろう プロシージャ名間違いなら、読み込みでエラーにはならないが呼び出しではエラーになるし 一応確認してみたが、vbs内でPrivate宣言したSubプロシージャを そのvbsをインクルードしたwsf内で呼んでみたが、きちんと実行された
861 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:21:47 ] VBScriptでなく、JScriptにすれば? function a(){ WScript.Echo('a'); b(); function b(){ WScript.Echo('b'); } } a(); b();//エラー
862 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:40:14 ] MsgBoxをModelessに出して、後で閉じる方法を教えてください
863 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:41:20 ] WshShell.Run "MsgBox.vbs"
864 名前:デフォルトの名無しさん [2008/04/01(火) 22:03:55 ] あるサイトに含まれている文字列をカウントして出力する、 VBscript(HTA)を、作成しているのですが、 実際に試してみると、以下のダイアログが出現してしまいます。 「このスクリプトの実行を中止しますか?」 このページのスクリプトが、IEの実行速度を落としています。 このまま実行を続けても検索結果となる数字が出力されません。 この場合、どうしたらよいのでしょうか? 以下に、該当する処理を載せます。 strSerch = document.u_list.key.value i = 0 If strSerch="" Or strSerch=" " Then '検索フォームに何も入っていないとき Else Do While InStr(webtext,strSerch) '検索キーワードでサイト検索 i = i+1 '検索回数カウント Loop End If
865 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:22:47 ] >>864 無限ループにならないようにすると良いのです
866 名前:デフォルトの名無しさん [2008/04/01(火) 23:30:32 ] ひどいロジックだな。 最近は「フローチャート」とか書かなくなったせいか こんなのが増えたな。
867 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:37:41 ] フローチャートなんて日本で「マイコン」が出だした頃でも既に有用性が 否定されていたぞw
868 名前:デフォルトの名無しさん [2008/04/01(火) 23:50:25 ] ↑ 言うと思った。バカの一つ覚えw それは、ある程度、論理的な思考ができるヤツがいう事だよ。 >>864 みたいに未熟なヤツは、フローチャートから入らないとダメ。 今からやろうとすることを、目に見えるカタチにしてまとめる。 これは大事なことだよ。 >>867 は後輩を育てられないタイプだな。
869 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:15:04 ] i = UBound(Split(webtext,strSerch)) + 1 '検索キーワードでサイト検索 検索回数カウント
870 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:58:45 ] found = 0 i = 0 Do found = InStr(found+1,webtext,strSearch,vbTextCompare) i = i + 1 Loop While found i = i - 1 初心者だけど同じ関数で無理やりやってみた。>>869 みたいに綺麗に逝きたい…
871 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:10:39 ] あー、でもこれ"aaaaaaaaaaaa"から"aaa"を検索したいときどう解釈するべきなんだろ。 >>870 では10回、>>869 では4回?
872 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:16:13 ] あれ?検索文字列を区切りにしたなら検索された数は要素数-1でないの? UBoundに+1する必要ないような。
873 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 02:35:03 ] i = Len(webtext) - Len(Replace(webtext,strSerch,Mid(strSerch,2)))
874 名前:デフォルトの名無しさん [2008/04/03(木) 00:59:23 ] カッコつけて恥かいちゃったね
875 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:22:25 ] (恥)
876 名前:ドシロウト mailto:sage [2008/04/03(木) 11:45:22 ] >>870-872 が自分のレスだけど、それ以外の人にも、わかってる人は 罵倒レスじゃなくてなんでダメポなんか書いて欲しいな。 スレ見てても参考にならんわ。 >>873 は何したいのかわけわかめなんだけど。 i=全文字数-(ヒットした数x(検索文字列の字数-2)) でいいんかな? この2はどこから出たのやら? もしかして>>871 に対するレスか?
877 名前:ドシロウト mailto:sage [2008/04/03(木) 11:54:33 ] 連レスすまん。 カキコした瞬間に勘違いに気づいた。 webtextで検索文字列にマッチした部分を検索文字列の2文字目以降で全置換 →全文字数がマッチした回数x1文字減るから減った数をカウントすればマッチ数がわかる でOK?
878 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:49:57 ] i = (Len(webtext) - Len(Replace(webtext,strSerch,""))) / Len(strSerch)
879 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:54:58 ] found = 1 - Len(strSerch) i = - 1 Do found = InStr(found+Len(strSerch),webtext,strSearch,vbTextCompare) i = i + 1 Loop While found
880 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:28:22 ] ここ、PC初心者板じゃないよね?
881 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:34:37 ] >>880 ちがうよ スレタイも読めないの?
882 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:35:29 ] 何が言いたい? 煽るなら死ぬ気でやれよ
883 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:36:15 ] っちょ うざいな
884 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:51:50 ] >>880 凄いなぁ!尊敬。アッタマいい!かっこいい。 (などと言われてみたい。。。てか?
885 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:54:16 ] >>880 は例の基地外
886 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:57:19 ] >>864 正攻法はRegExpだろ?
887 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:17:17 ] >>880 にもチャンスをやろうよ RegExp使ったコード書いてみ?
888 名前:デフォルトの名無しさん [2008/04/03(木) 19:21:46 ] i = UBound(Split(webtext,strSerch)) すでに答えが出てるだろ。
889 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:38:52 ] >>868 あのなあ。。 フローチャートってのは「プログラミング言語以外で処理内容を表現するツール」 いうなれば「プログラマ以外の人間の方を向いたツール」であって(だから今でも ユーザーズマニュアル等には時々出てくる)プログラマが思考の整理に使う道具ではないんだよ。 もう30年も前から言われていることだが、フローチャートってのは 複雑性を縮減する機能が全くないだろう。 ただベタに処理をチャートで表現しただけだからな。 だったらそんなもの書いてる暇があったらとっととコード書けってw こんな人間が後輩の育成とか釣りではなく言ってるならどんだけ馬鹿なんだよw っていうかこんな人間に「育成」される人が可哀想だ。
890 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:42:38 ] >>887 正規表現で指定したい場合なら、何の変哲もないが With New RegExp .Pattern = strSerch '.IgnoreCase = False .Global = True found = .Execute(webtext).Count End With でいいんじゃね? IgnoreCaseプロパティは必要に応じて指定すれば良し >>871 の場合の結果は後者
891 名前:kuchigakusaiossan [2008/04/04(金) 11:47:41 ] すいません、スレ異かな。WSHの言葉だけで来ました。 悩んでます。だれか教えぇぇぇぇ〜〜て EXCEL2003 VBAで www.happy2-island.com/vbs/cafe02/capter00711.shtml あたりに WScript.Sleep 5000 っていうのがさりげにつかってありますが オブジェクトが必要です というエラーが出ますうううぅぅぅぅぅ 私はどうすればいいのでしょうか。 悩みと疲労で歯槽膿漏がますますひどくなりますうううぅぅぅ ぐぐると以下の同じような人もいます。だれか愛の手を win32のsleepとかはなしで、Wscript.echo もつかいたいし >Excel VBA質問スレ Part5 878 :デフォルトの名無しさん:2008/03/02(日) 23:54:52 物凄く基本的な事で申し訳ないのですが・・・、処理待ちでスリープを掛けたく、 WScript.sleep (250) と記述していますが、エラー424 オブジェクトが必要です というエラーが出るのです。 何か参照設定が足りないんでしょうか。。 879 :デフォルトの名無しさん:2008/03/02(日) 23:56:42 ググれよ・・・ 880 :デフォルトの名無しさん:2008/03/03(月) 00:01:10 >>878 WScript.exeを参照設定しろー
892 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:05:48 ] すれちがい
893 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:04:30 ] ぐぐれもん
894 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:05:30 ] WScript.exeを参照設定しろ
895 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 19:36:53 ] 実際問題としてVBAならDeclareが一番楽だと思うんだ
896 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:11:06 ] Application.Waitのほうが簡単
897 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:15:39 ] >>887
898 名前:デフォルトの名無しさん [2008/04/05(土) 02:12:04 ] >>889 後輩つぶし必死だなwww そんなに若者に追い越されるのが怖いのかい? >そんなもの書いてる暇があったらとっととコード書け で書いたのが、>>864 だよ。 キミは後輩にこんなコードを書かせて満足してるんか?
899 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 03:26:18 ] いいぞもっとやれ
900 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 04:37:18 ] よそでやれ
901 名前:kuchigakusaiossan [2008/04/06(日) 14:14:28 ] >>891 自己レスですぅ 誤った解釈は、www.happy2-island.com/vbs/cafe02/capter00711.shtml はVBAじゃなくWSHのスクリプトそのもらしい。 www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html から考えましたが 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 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 14:30:59 ] だいたいそういうこと。 WScriptオブジェクトはwscprit.exe/cscript.exeがスクリプトへ与えるもので、 その大半はスクリプトを実行したときでいないと意味を成さない。 例えば、WScript.SleepならVBではWin32 APIのSleep関数を使えばいいという具合に別の方法がある。
903 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:24:34 ] スレ違い 【OLE】オートメーション総合スレ【ActiveX】 pc11.2ch.net/test/read.cgi/tech/1137771139/l5
904 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:33:35 ] ActiveScript絡みだしギリギリOKじゃね? OLEオートメーションは一寸戻り過ぎだ。
905 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:12:55 ] >なぜVBAからWscriptのオブジェクト化ができないのか? できるけど?
906 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:29:47 ] Set WScript=GetObject("WScript.exe")
907 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:38:31 ] WScript.exeをtlbimpした.NETアセンブリを作って、 それをregasmしてVBAから呼び出す。
908 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:34:49 ] なぜWSHからVBAの関数やステートメントが呼べないのか?回避策は?などは 誰か〜〜 知ってる人おらんか。。。。。。 ヨロシク
909 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:56:36 ] VBAは外部に公開されていないし、ステートメントは論外だろ。 よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。
910 名前:デフォルトの名無しさん [2008/04/07(月) 02:23:47 ] >>905 どうやって作るのかコーディング例希望 ちなみに >>906 は excel2003VBA では 「オートメーションエラーです」になる。なにかおまじないが必要なら ご教授ねがいたい。くれぐれも実際に動作する説明でお願いしたい。
911 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:37:28 ] >>908 >>909 回避策でよいなら、Office経由で可能では? WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にVBAのコード 動的に登録して実行すればよい とはいっても最近ではセキュリティの関係でOfficeの外部からVBAコード操作するとエラーになるけど、 これについては設定変えればいけると思う(たぶん)
912 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:19:56 ] >>910 WScriptは外部に公開されていないし、CreateObjectは論外だろ。 よって回避策も無い。呼び出すこと自体が目的でないなら別だけど。
913 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:22:25 ] >>910 回避策でよいなら、Office経由で可能では? WSHからOfficeのオブジェクト作って、非表示のOfficeのドキュメント内にWScriptのオブジェクトを 動的に登録して参照すればよい
914 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:27:23 ] >>908 Excel.Application.Run (Excel2002以降は不可) Access.Application.Eval (関数のみ) FoxPro...
915 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:05:58 ] htaなんて便利なものがあるのを初めて知った。 まだpowershellはいいや。
916 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 12:25:35 ] すれっち
917 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:41:44 ] 違うよ ここでは CreateObjectはVBAのグローバル関数(メソッド) WScript.CreateObjectはWSH(WScriptオブジェクト)の関数(メソッド) なのでVBAでは使えない ちなみにWSHでは Set WSH= はエラー
920 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:14:52 ] ADOでExcelに接続してワークシートをテーブルに見立ててクエリ投げる、ってのあるじゃないですか、 Excelが2000・2002(XP)・2003の環境だと問題ないんだけど、今日同じソースでExcel2007で初めて動かしたら ADO接続のところでエラーになった。 もしてかして2007ってこれ使えない?
921 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 10:18:52 ] 当然
922 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:33:43 ] >>921 こういうレスって2007使ってない奴には何が当然かさっぱりわからんわな。
923 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 18:31:53 ] >>921 thx!
924 名前:デフォルトの名無しさん [2008/04/11(金) 21:49:08 ] >>922 kwsk
925 名前:デフォルトの名無しさん [2008/04/11(金) 22:08:45 ] >>919 ここでは、って言われても・・・ ここはWSHのスレだろ?VBAのスレじゃ無いよ。
926 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:34:51 ] 質問文の日本語を読めなかったの?
927 名前:デフォルトの名無しさん [2008/04/12(土) 01:45:37 ] 質問文の日本語を読めば、ここがVBAスレに変身するのか?
928 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:20:49 ] ここがWSHスレだから、元レスがWSHの質問文に変身したというのか?
929 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:12:30 ] >>910 WScript.exe /register
930 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:18:02 ] regsvr32 WScript.exe
931 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:38:59 ] >>910 WSC作って Set WScript=GetObject("script:WScript.wsc")
932 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:01:40 ] >>929-930 こういう小学生的なレスの意味は?
933 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:12:27 ] 他人の人生の意味なんか考えてても人生の無駄だぜ
934 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:05:43 ] 他人が以下に自分より劣ってるかというのは重要だぜ
935 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:14:35 ] 他人が恥を晒しているのが見れるのは重要だぜ
936 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 00:56:49 ] >>932 レベルを相手に合わせてるんじゃないの?
937 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 01:08:50 ] そう思ってるのは本人だけ。
938 名前:kuchigakusaiossan mailto:sage [2008/04/13(日) 13:15:30 ] WSHのソース作成&デバッグってみなさんどうしてるの? vbs をダブルクリック等で起動するようなスクリプトを VB(A)と同じようようなデバッグ環境でデバッグできますか? excel2003の Script Editor が使えるのかなと動かしてみたが これはWEBのVBS用なのかな。。? スッテップイン させてもブラウザが動いてステップしないし ぐぐるとWSHではそのままでは動かないような事もでてくるし ttp://www.sio.no-ip.com/mt/shio/archives/2005/05/wsh-os.html イミディエィトウィンドウがないみたいだし エクセルVBAで書いてるソフト(自己使用)のメイン部分をWSHにしてエクセルから外にだそうと 考えていいますが、すなおに VB(Visual studio ?)にでもしたほうがいいのかな。。。 よろしく〜〜〜〜〜〜
939 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:26:29 ] Msgbox デバックだろ。常考。
940 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:32:17 ] VisualStudio持ってるけど、VBS相手に使ったことないなぁ〜 使ってる/使ったことあるひと教えて〜
941 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:39:34 ] wscript //?
942 名前:デフォルトの名無しさん [2008/04/14(月) 02:35:34 ] VisualStudio 2005 Enterprise Edition は コード補間のできるVBSエディタとして使ってるけど デバッグは MsgBox や Wscript.Echo だな。 これは VBS に限らず、すべてのプログラミング言語に共通する 基本中の基本だな。
943 名前:デフォルトの名無しさん [2008/04/14(月) 08:30:01 ] MSがscript debugger とかいうの配布してなかったっけ? おれもmsgboxデバッグ派だけど。
944 名前:デフォルトの名無しさん [2008/04/14(月) 11:36:24 ] デバッガ使うよりメッセージ出力のほうがいい理由って何?
945 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:27:54 ] デバッガがある環境は限られるが、メッセージ出力はメモ帳があれば追記できる。
946 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 14:31:09 ] ScriptDebugger って生VBSで使えたんだっけ? たしかIEのオプション(?)でASPとか向けだった気がするんだけど。
947 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:00:59 ] >>941
948 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:00:37 ] VisualStudio だとVBSのステップ実行できないし変数ウォッチできないだろ
949 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:09:09 ] つまりScriptDebuggerならステップ実行&変数ウォッチができるってこと?
950 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:44:18 ] >948 できないよ
951 名前:デフォルトの名無しさん [2008/04/15(火) 08:34:13 ] そのdebuggerってフリーなの?
952 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:58:30 ] WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。 これほど使いづらい言語はお目にかかったことがない。
953 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:23:32 ] >WSHってかvbsは外部コマンドも呼びづらくパイプ処理も面倒で >かといってWin32APIも呼び出せず単体ではモジュール化もできないと制約だらけだな。 自分の無知を言語のせいにする典型だなw
954 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:57:29 ] 言語を使いこなせない狐が酸っぱい葡萄と言うんだって?
955 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:33:46 ] WSHでAPI呼べるの?
956 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:40:28 ] そういうCOM使って呼べる
957 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:44:20 ] >>955 WSHでもAPIは呼べるよ ActiveXって種類のAPIなら直接ね そしてWin32APIって種類のAPIはActiveXから呼べるので 結果WSHからWin32APIを呼ぶことも可能
958 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:47:25 ] よーするに呼べないってことですね。
959 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:53:11 ] 馬鹿には呼べないってことですね。
960 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:56:35 ] vbaは外部コマンドも呼びづらくパイプ処理も面倒で
961 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:20:27 ] 言語仕様もひどいもんだしな
962 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:24:15 ] >ステップ実行 1行ごとにStop文
963 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:40:33 ] >外部コマンドも呼びづらくパイプ処理も面倒 なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの
964 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:25:44 ] COM作れるんだったらそっちの開発環境で完結すればいいんじゃね なにもWSHなんぞ使わんでも
965 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:36:02 ] MSに文句を言ってるんだと思った
966 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:40:24 ] >なのは"WScript.Shell"がへぼいせいで、もっといいCOMを作れっていうの だれか作って コンソールを非表示にできる StdOut/StdErrにデータがあるかブロックしないで調べられる/取り出せる できればStdInにreadが掛かってるか分かる
967 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:42:39 ] WSHにのってるまともなスクリプト使えば一瞬で解決だろ
968 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:53:31 ] 追加 AppActivateでなくFindWindowどまりの機能 SendMessageもついでに
969 名前:デフォルトの名無しさん [2008/04/16(水) 21:02:45 ] >>952
970 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:05:45 ] COMに手を出す時点で、WSHに拘る理由がなくなるな。 そのまま他言語で書いた方が早い。
971 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:37:36 ] 一時的に目的を達成するだけならね しかしそういう状況のみではないんだよ もっと視野を広く持とう
972 名前:970 mailto:sage [2008/04/16(水) 22:00:06 ] むしろ、WSHに拘っている方が視野が狭いと思ったわけで。 >>966 や>>968 程度の機能でいちいちCOMコンポーネント書いて、 使うPC毎にいちいちregsvrして、って唯のギャグだろ。
973 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:12:48 ] そうでもないか
974 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:38:14 ] >>972 そうそう。 だから、WSH付属のコンポーネントがもっと高機能だったらよかったのにと思う。
975 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 09:25:24 ] 何故自分にレス?
976 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 13:27:53 ] 自意識過剰w
977 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 09:49:46 ] オプションって//じゃなくて/でもいいの? 1つでも動くっぽいんだけど cscript /nologo xxxxxxxxxxx って感じで
978 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:38:38 ] おk
979 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 13:49:30 ] /と//になんか違いはあるの?
980 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 15:53:43 ] スクリプトのファイル名の後にオプションを記述するときは //でなければならない。
981 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 16:28:44 ] へー
982 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 17:07:02 ] cscript -nologo xxxxxxxxxxx でもよい
983 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 18:05:11 ] どうでもよい