周りではWSHのいい評判をあまり聞きません。
個人的には簡単なバッチ業務には最適な言語?とおもうので
社内でも広めるために色々と勉強を始めたところです。
まず、WSHでパスを追加したいのですが、そのようなメソッドが見つかりません。
無理なのでしょうか?
To:ヨッシはん
>VBScriptでインターネットエクスプローラのバージョンを調べるには
>どうすればいいでしょうか?
もっとスッとしたやり方がありそな気ィするんでっけども・・・。
Set oIE=CreateObject("InternetExplorer.Application")
oIE.Navigate "about:blank"
Do While oIE.Busy: WScript.Sleep 100:Loop
MsgBox oIE.Document.parentWindow.navigator.appVersion
oIE.Quit
はじめまして。
VBScriptでインターネットエクスプローラのバージョンを調べるには
どうすればいいでしょうか?
Set Ie = WScript.CreateObject("InternetExplorer.Application")
このあとどう書けば?
ながともさん、スクリプトから word のオブジェクトが生成できないことがある、という件ですが、ワタシの経験では、 ノートン・アンチウイルスの「スクリプト遮断」が有効になっていると、その事象が起こるようです。見当外れかもしれませんが、多少でも参考になれば幸いです。
To:シュンはん
・・・実行してもろたら、セキュリティは逃げれまっせ。
と書いたが、ホンマにそうか、は自信おまへん。
すんまへん、中途半端で。
To:シュンはん
>ActiveXを使ってクライアントサイドで動かすスクリプトって、
>[インターネットオプション]-[セキュリティ]の設定で、
>スクリプトを有効にしてやらないと動かないですよね?
FileSystemObjectあたりを勝手に作られるとローカルディスクの
ファイルに好き放題でけまっからなぁ。
HTMLに似たHTAゆうのもありまんので、これをいったん
ローカルにダウンロードしてもらってクライアント自身に起動・
実行してもろたら、セキュリティは逃げれまっせ。
HTAのことは、むたぐちはんの解説を見とくなはれ。
>>筑集眺餅さん
レスありがとうございます。
下記コーディングで試した所、無事プロパティへの追加できました(^-^)
ところで話は変わって、
ActiveXを使ってクライアントサイドで動かすスクリプトって、
[インターネットオプション]-[セキュリティ]の設定で、
スクリプトを有効にしてやらないと動かないですよね?
(下の方の質問にあった、「PCによってはCreateObjectが正常に実行されない」というのもコレが原因ですよね)
ただ、そうなるとクライアントPC一つ一つの設定をいじらなければならないことになりますし、
セキュリティ面でも不安要素を作る形になると思います。
HELPでは、これを回避するためにデジタル署名作成して配布する…というような事がかかれていましたが、
回避策はこれしかないんでしょうか?
==コード(抜粋)==
'文書属性をフォーマット
For Each objProp In objDocument.CustomDocumentProperties
If objProp.Name = "Name" Then
objProp.Delete
End If
Next
'文書属性を追加
objDocument.CustomDocumentProperties.Add "Name", "False", 4, "tanaka"
==コード==
データサバー(OS:WIN2000)にAccess2000mdbデータを置き、クライアント(OS:win2000、台数:7台)からデータサーバーに対してネットワークドライブを設定して、処理を実行しています。プログラムは、VB5・Access2000で開発しています。他のクライアントがデータを参照している時に、VBプログラムからそのデータmdbに対して、クローズを行うとかなり時間がかかってしまいます(VBのデバックモードで検証 約2秒)。処理は正常に動きます。以前OSがWIN98の時は、問題なく動作していました。
どなたか解決策をご存知の方教えて下さい。納期が迫っており、困っています。
宜しくお願いします。
To:Toroiはん
>VBScriptを起動後時間を指定して実行させることはできないでしょうか?
時間を指定して起動する、んやなくて、起動後の時間を指定して実行でっか?
起動してxx秒後に実行、ゆうことかいな?
たぶん、スクリプトで時刻を管理して、適当な時刻が来るまで何もせんで
待つ(か、WScript.Sleepする)ゆうことになるんとちゃいますやろか。
To:シュンはん
どないしたらええか、ゆうことは判りまへんねんけど、1個だけ。
VBAとVBSやと関数の呼び方が違いまんねん。
VBAやと、引数の名前を指定して Name:="Name"とかでけまっけど、
VBSやと単にカッコの中に引数を並べて ","で区切るゆうやり方だす。
はじめまして。
VBScriptで行き詰まっている部分があるので質問です。
現在、IEからVBSでWordオブジェクトを作成し、
Word文書にある属性値を持たせるということを試みています。
新規でインスタンスを作成し、Word文書中に属性値を書き込むということはできたのですが、
出来ることならばその属性値は文書中には表示させたくありません。
WordVBAのHelpでCustomDocumentPropertiesなるプロパティを見つけ、
理想としてはこれに属性を追加したいところではありますが、
下記コードをVBSに実装してもエラーが起きてしまいます。
どうかご指南お願いしますm(__;)m
==コード(抜粋)==
Set objWord = CreateObject( "Word.Application" )
Set objDocument = objWord.Documents.Add
objDocument.CustomDocumentProperties.Add _
Name:="Name", _
LinkToContent:="False", _
Value:="tanaka"
==コード==
また質問させていただきます。
VBScriptを起動後時間を指定して実行させることはできないでしょうか?
どなたかご存知の方はよろしければ教えてください。
お願いします。
To:XE75はん
>やりたい事は
>プログラムを不特定多数に配布を考えています
>そのため、プログラムの場所を指定しなくて
>起動するWSHShell.Run が使えればと考えました。
うーん。ワテ、ご質問の意味を誤解してましたのやろか?
最初のご質問を、"ACCESS2000のVBA"で動かへんのは
なんでか、ゆう理解をしましたんで、”VBAの中では
WScriptオブジェクトは使えまへんのんで、VBAの
Shell関数を使こたら”ゆうことでんねんけど。
やりたい事は
プログラムを不特定多数に配布を考えています
そのため、プログラムの場所を指定しなくて
起動するWSHShell.Run が使えればと考えました。
VBA でもある程度の VBScript は動作しますので
期待したのですが
To:XE75はん
>上記の方法は、分かるのですが
>CAD,画像など色々なアプリケーションを起動したいので
ほな、シェルが使えたらよろしいんでっか?
ワテの使こてる Access97やったら、VBSで Shell関数が使えるらしですわ。
VBAのヘルプを見てみなはったら?
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' 電卓を実行します。
To:筑集眺餅 さん
Set objXL=CreateObject("Excel.Automation")
objXL.Visible=True
objXL.Workbooks.Open "d:\有給.xls"
・・・て感じ?
筑集眺餅 さん 返事ありがとうございます。
上記の方法は、分かるのですが
CAD,画像など色々なアプリケーションを起動したいので
WSHで作ったほうが、簡単なので質問しました。
何かレベル高すぎる。でもみなさんなら楽々できるお仕事あります。
http://homepage3.nifty.com/atlantis/
To:mozukuはん
・・・思いっきり訂正。ヘルプファイルは、acd56jp.exe どした。
>scd56jp.exe にはMicrosoft Visual Basic Scripting Edition、
>Microsoft JScript、Windows Script Host、および Windows Script
> Components についての概念およびリファレンスが記述されている
>オンライン ヘルプが提供されています。
To:XE75はん
ACCESS2000 のVBAから呼び出しはんの?
WScript オブジェクトは、WSHスクリプトからやったら参照でける
けど、VBAからは見えへんと思いま。
(せやから、WScript.CreateObject メソッドでこけまんねん。)
Excelを起動しはんねやったら、直接 CreateObject 関数を
使こて、Excel オブジェクトを呼び出しはったらよろしと思いま。
Set objXL=CreateObject("Excel.Automation")
objXL.Visible=True
objXL.Workbooks.Open "d:\有給.xls"
・・・て感じ?
訂正です。
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "Excel.exe" & " d:\有給.xls"
To:筑集眺餅さん
>(データ型の設定の話ですやろ?)
そのとおりです。
ありがとうございました。(見事成功しました)
XE75と申します。
実は、下記のプログラムを
ACCESS-2000で実行したいのですが
オブジェクトが必要ですのエラーメッセイジがでます
スクリプトでの実行では、問題ありません
ACCESSの質問してもよろしいのでしょうか?
Dim WSHShell As Object
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "d:\有給.xls"
To:Toroiはん
>できましたが、値のデータを設定するにはどうしたら良いのかわかり
>ません。どなたかご存知の方よろしければ教えてください。
ランゲージレファレンスは見なはった?
RegWriteメソッドのサンプルスクリプトおまっせ。
(データ型の設定の話ですやろ?)
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ"
・・・ワテはレジストリ関係 使こたことおまへんけど。
英語。
手ごわい。やっぱ英語読めなきゃ駄目と。
MSXMLはバージョン違うと
動作がぜんぜん違うときいてますんで読みこなさなきゃ。
このサイトはとても参考になります。
レジストリのところを勉強中ですが、キーや値を書き込むことは
できましたが、値のデータを設定するにはどうしたら良いのかわかりません。どなたかご存知の方よろしければ教えてください。
よろしくお願いします。
To:夏彦はん
>objWshShell.Run "test.bat userid" (useridは変数)
>(これだと変数useridの中身が展開されません)
"〜"の中身は文字列ゆうことで、変数は自動で展開されまへん。
変数を文字列に直してから、連結しなはれ。
objWshShell.Run "test.bat" & " " & userid
あ、名前間違えてしまいました、夏茶ではなく夏彦です(T_T)
失礼致しました
>筑集眺餅 さん
どうもありがとうございます。
自己レスです。お恥ずかしいことに何度やってもうまくいかないいかない
なんでだろうと思ってたらWSHの問題ではなくバッチファイルの問題でした(涙)
ここで又疑問が・・・引数が変数の場合を考えてたのですが
これが上手くいきません。アドバイス頂けませんでしょうか。
宜しくお願い致します。
(例)
objWshShell.Run "test.bat userid" (useridは変数)
(これだと変数useridの中身が展開されません)
To:夏彦はん
>objWshShell.Runを使用してnotepad等のプログラムをWSHから起動出来ますが
>引数を与えてプログラムを起動することは可能なのでしょうか?
Runメソッドの引数は、コマンドラインですさかいに、コマンドラインで引数を
受け取れるプログラムやったら、そない書いたらよろし、と思いま。
objWshShell.Run "notepad.exe aaa.txt"・・・みたく。
To:mozukuはん
>今Lesson3なのですが,文中に出てくる“ランゲージリファレンス”は
>いったいどこにあるのでしょうか??
関連リンクから、たどれまっさ。
ダウンロードするヘルプファイルが便利でんな。
"Windows Script Version 5.6 ダウンロード"のリンクから、
scr56jp.exe
を落としてインストールしなはれ。
"Windows Script"のリンクからオンライン・レファレンス
(VBScript ランゲージレファレンス)も辿っていけま。
はじめましてmozukuと申します。
最近WSHを知り,基礎講座の方で勉強してます。
今Lesson3なのですが,文中に出てくる“ランゲージリファレンス”は
いったいどこにあるのでしょうか??
くだらない質問でごめんなさい。
どなたか宜しくお願い致します。
はじめまして。
どなたか教えて下さい。
objWshShell.Runを使用してnotepad等のプログラムをWSHから起動出来ますが
引数を与えてプログラムを起動することは可能なのでしょうか?
自分で作成したバッチファイルに対して引数を与えWSHから起動したいなと思っているのですが
なかなか上手くいかないので・・・
宜しくお願い致します。
松本泰也さん>
初めまして、通りすがりの者です。
私も松本さんと同じような壁にぶち当たっていて色々検索してこちらに辿り着きました。
ご質問の件ですが、こちらのホームページの「VBスクリプト講座・応用編」の「Lesson9 アプリの起動とレジストリ」ではないでしょうか。
”第三引数にはRunメソッドで起動したアプリの終了を待つかどうかを指定します。Trueだと終了するまで次の行に制御を移さない、Falseだと起動と同時に次の行に制御を移します。省略するとFalseになります。”
この辺が解決の糸口になるかと思います。私はこれで解決致しました。
それでは。
はじめまして
松本泰也と申します。
大変参考になるプログラム掲載されていますね
いろいろ参考にさせてもらっています。
実は、ひとつのプログラムの中に setup.exeと
setup2.mdb があるのですが、続けてプログラムが実行されてしまいます
setup.exe を終了してから 次の setup2.mdb を実行したいのですが
よく分かりません。
★下記のようなことがこちらのホームページに記載されています
アプリケーションが実行できる
普通にアプリケーション(*.exe)を実行できるだけでなく、ただのファイルを指定しても、関連づけに従ってアプリケーションを起動してそのファイルを読み込ませることができます。また、実行させたアプリケーションが終了するまで次の動作に移るのを待たせることもできます。
どなたかご存知の方がいましたら、教えてください。
よろしくお願いします。
ありがとうございます。そのとおりでした。
version5.1だったのを5.6にしたら正常な値が読めました。
To:ぽんぽこはん
>このようなスクリプトを実行しますと、Windows98SEだと合計サイズも
>空き容量も常に2,096,832という値になってしまいます。
はぁ、2,096,832 KB ちゅうことは、2GBっちゅうことでっしゃろな。
2GBの壁っちゅうやつですかいな?
Windows Scripting Host のバージョンが古かったりして、
2GB超のディスクに対応でけへんとかゆうことやったり
しませんやろか?
もしか古かったら、バージョン上げてみはったら?
Microsoftの以下のページ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/sgworkingwithdrives.asp
を参考にして
Dim fso, drv, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set drv = fso.GetDrive(fso.GetDriveName("C:"))
s = s & "合計サイズ: " & FormatNumber(drv.TotalSize / 1024, 0)
s = s & " KB" & vbCrLf
s = s & "空き領域: " & FormatNumber(drv.FreeSpace / 1024, 0)
s = s & " KB" & vbCrLf
WScript.Echo s
このようなスクリプトを実行しますと、Windows98SEだと合計サイズも空き容量も常に2,096,832という値になってしまいます。
2種類のPCで試してみましたが、同じ結果でした。
このスクリプトはWindows2000で試すと、きちんと動いているようです。
googleで検索してみても、似たような現象がうまく引っかかりませんでした。
これはどういう理由なのでしょうか?
ながともと申します。
検索サイトよりここに来ました。
ここにVBScript関係の質問をさせていただいてよろしいのでしょうか?
VBScriptでWordを起動しようとしています。
CreateObject(Word.Application)を使用しています。
これが起動するPCとしないPCがあり
何故?何が?Officeのインストールに問題が?
という状態であちこちのサイトを検索して調べています。
何かご存知の情報があればお教え願えませんでしょうか。
動かないPCはWin2KでOffice2000スタンダード?がインストール
されているようです。
シナプスさん>
こんな感じでしょうか。
これまでMSXMLのドキュメントが日本語化されたことは一度も
ないと思います。私は見たことがありません。
MSXML 3.0 SDK ダウンロード
http://msdn.microsoft.com/downloads/sample.asp?url=/msdn-files/027/000/542/msdncompositedoc.xml&frame=true
MSXML 3.0 SP2 (DLLのみ) ダウンロード
http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/772/msdncompositedoc.xml&frame=true
MSXML 4.0SP1 ダウンロード
http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/766/msdncompositedoc.xml&frame=true
(MSDN)MSXML 3.0 SDK
http://msdn.microsoft.com/library/en-us/xmlsdk30/htm/xmmscxmloverview.asp?frame=true
(MSDN)MSXML 4.0 SDK
http://msdn.microsoft.com/library/en-us/xmlsdk/htm/sdk_intro_6g53.asp?frame=true
これ以外でもPlatformSDKでCore SDKをダウンロードすれば、勝手に入ると
思います。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
OS WIN2000においてコマンドにて再起動方法をテクニック集のものを使用させて
いただいたのですが、うまくいきません。
どうしてなのでしょうか?
下記のように変更して使用したのですが・・・。
よろしくお願いいたします。
Set WSHSHell=CreateObject("WScript.Shell")
WSHShell.Run "C:\WINNT\SYSTEM32\RUNDLL32.EXE Shell32.dll,SHExitWindowsEx 2"
”ActiveXは安全ではない・・・”のメッセージを出さない方法について
はじめまして タムタムと申します。
以後よろしくお願いします。
現在
JavaScriptで「ヘルプ機能なるもの」を作っています。
構成は以下のとおりです
main.htmlは2つフレーム(a.html及びb.html)で出来ています
a.htmlには画像を出します。
b.htmlはボタンで構成されています
ボタンを押すことで次の画像を出します。
(初めを1-1.jpgとした場合1-2.jpgを表示します)
その章のページがなかった場合
次の章の初めのページを表示します。
(2-1.jpgを表示します)
ファイルの有無は
ActiveXObject("Scripting.FileSystemObject")の
FileExistsを使用しています。
(本当は、ファイル読み込み処理で
1章は10ページ、2章は8ページってのが
分かればいいのですが・・・)
この方法だと
”ActiveXは安全ではない・・・”というメッセージが出ます。
過去のログの方法をやったのですがうまくいきませんでした。
・レジストリをいじる方法(指定のキー値がなかった)
・.htaにする(b.thmlへの再描画が出来なくなります。
locationでエラーになります)
私の.htaの使用法が間違っているんでしょうか??
また、もし他の方法があるならば教えていただけないでしょうか!!
よろしくお願いします M(_ _"M)
>#WSCは実は登録しないでも使えるといううわさも。。
多分GetObjectの事ではないでしょうか?
helloメッソドをもったWSCを作成
D:\test\wsc\Hello.wsc
登録せずにこのVBSを実行すると
Set A=GetObject("script:D:\test\wsc\Hello.wsc")
msgbox(A.Hello)
検証していませんがこの方法は滅茶苦茶遅いような気がします。
いやーお返事が遅れてすいません。
他のWSCからCopyしてやり直したら原因不明で上手くいっちゃたんで。
そうだったんですか。
文字Code良く忘れそうですね。
所でもう一つ質問があるのですが。
MSXML3.0か4.0のヘルプファイル
MSDNのどこかにありませんかね?
MSDNでなくても詳細なのがあれば嬉しいんですけど。
はじめまして。なちすけと申します。
ファイルをコピーしたいのですが、
ネットワーク内にある他のPCのファイルを
自分のPCにコピーすることって出来るでしょうか?
ご教授ください。お願いいたします。
Notepadの終了ですが、以下ではどうでしょう?
WshShell.Sendkeysで[Alt]、[F]を発行してファイルメニューを開き、
さらに[X]を発行して閉じる。
だめ?
こんにちは。はじめまして。
偶然この掲示板を見つけたので、早速質問させていただきます。
WSHは、Hello World止まりの初心者です。
アプリケーションの起動は、
WSHShell.Run "test.txt"
等でできますが、これで起動されたNotepadを終了させることって
できますか?いろいろ探した*つもり*なのですが、見つけられませんでした。
ご回答お願いします。
Dear hirさん
あっ、なるほど。確かに。
言われてはじめて気づきました。
ご指摘ありがとうございました。
#WSCは実は登録しないでも使えるといううわさも。。
シナプスさん&つちやさん
xml形式でwscを書く場合、頭の<?xml>宣言で
文字コードを適切に宣言する必要があります。
指定なしの場合、デフォルトはutf-8になるので
sjisでwscを書いても登録できません。
charset="shift-jis"と追加すれば良いと思います。
OSにWindowsMeを利用しています。
マイドキュメント内「マイピクチャ」フォルダ内のサムネイルが表示されなくなってしまいました・・・
表示→縮小表示 でも出てきません。
最近行った行為といえば、OfficeXPを削除したくらいなのですが。
どなたかご教授願えませんか?
お願いします。
>sさん
(^^;;
その通りですね。
上の記事から読んだので、先にさざなみさんにレス付けましたが
ご指摘の通りでできました。
常に新しいファイル作っていたんですね・・・ブレークでもできれば、簡単に気づくのでしょうが・・・(言い訳)
とにかく、ありがとうございました。
>さざなみさん
Set oTs1 = Fs.OpenTextFile(filepath,ForAppending)
で、append(8)を指定しています。その場合はファイルの最後に追加
ではないのでしょうか?
はじめまして。
早速ですが、特定のプログラムで開いたWindowに対して
SnedKeyで文字列を送りたいと思い、以下のコードを書きました。
Windows2000では動作するのですが、NT4.0では動作しません。
ご存知の方、ご教授いただけないでしょうか?
よろしくお願い致します。
'-------------------------------------------------
For Each Process in GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where Name='notepad.exe'")
WshShell.AppActivate Process.ProcessID
WScript.Sleep(1000) ' 1秒待って
WshShell.Sendkeys("any keys") ' キーを送る
Next
さざなみです。
>まさ さん
>実行するとaのファイルには
>「ABC」しか書き込まれないのですが、何がおかしいのでしょうか??
>WriteLog "a","ABCDEFG0123456"
>WriteLog "a","ABC"
上書きしているので、「ABC」だけで正常な気が。。。
"a"のどちらかを"b"にしてみてはどうでしょう。。。