ちょっと前に1時間毎に自動DLするVBSで質問したんですけど
追加情報なんですがどうもWindows2000で実行すると停止しないで
動作するようです。バージョンの違いによるものなのでしょうか?
WSHはOffice2000をインストールしたときに勝手にIE5が入って
そこでWSHが入ったのじゃないと思ってます。
特にWSHだけインストールはしていません。
ただこのバージョンで動作するVBSが書けるならこのバージョン
で使いたいのですが...
こちらで調べてみたところ、wshplus.wp_ime.prof は正常に動作していないようです。どんな状況からでも3を返すみたいです。
また、wshplus.wp_ime.seton/off も、開発環境では動くものの、vbsからの使用では正常に動いていないみたいです。うむむむ・・・
原因は不明です。調べてみます。いろいろ悩ませてしまったみたいで申し訳ありませんでした。
こんにちは。
VBSにてプリンターの切り替えは可能でしょうか?
A、Bというプリンターがあるとして
AからBに変更するというものです。
Goriさん、ご返答ありがとうございます。
ソースと言っても確認用の簡単な物ですが、以下の様な物です。
他に、SetOnとOFFを繰り返して、その間にProfで取得した値をEchoで表示してみましたが、
戻り値は3のまま変化しませんでした。
環境はW98SEのWSHVer5.1です。
Dim ObjWshShell
Dim WP_O
Set ObjWshShell = WScript.CreateObject("Wscript.Shell")
Set WP_O=CreateObject("WshPlus.WP_Ime")
ObjWshShell.Run "notepad.exe",1,0
Wscript.Sleep 2000
WP_O.SetOn
Wscript.Sleep 2000
WP_O.SetOff
Wscript.Echo "End"
Set WP_O=Nothing
WSHPlusのIME制御は、どうにも上手く動かない場合が多いみたいです。
ソースを見せて貰えると解決の近道になると思いますが、どうでしょう?
初めまして、HP非常に参考にさせていただいています。
notepad等の入力アプリを起動して、日本語入力を行うために、
VBSでIMEの切り替えを行いたいのですが、うまくいかず悩んでいます。
リンクで紹介されているgoriさんのWSHPlusも試してみたのですが、
うまくいきませんでした。
どなたかご存じの方がいましたら、教えてください。
宜しくお願いします。
初めまして、HP非常に参考にさせていただいています。
notepad等の入力アプリを起動して、日本語入力を行うために、
VBSでIMEの切り替えを行いたいのですが、うまくいかず悩んでいます。
リンクで紹介されているgoriさんのWSHPlusも試してみたのですが、
うまくいきませんでした。
どなたかご存じの方がいましたら、教えてください。
宜しくお願いします。
始めまして。
1時間毎にホストのログをDLするようなVBSを作成しています。
VBSの先頭で
''1時間後に再度実行できようatコマンドを実行
Set WSHShell = WScript.CreateObject("WScript.Shell")
NextTime = Now + (1 / 24)
WSHShell.Run "at " & Hour(NextTime) & ":" & Minute(NextTime) & _
" """ & WScript.ScriptFullName & """", WshHide, True
こんなのでやってます。
気が付くとなぜかかってにとまってるんですけどなぜか分かりませんでしょうか?
NT4(SP5)+IE5です。
AKiOS さん
>型によって上限下限が決まっているので、扱う値によっては「unsigned
>があれば収まるのになぁ」ということはあるかもしれませんが、それ以外
>に必要だと感じることがVBで何かあるのでしょうか?
いくつか前に書き込みましたが、GetDiskFreeSpaceEX を使ったときに
Long Integer の値を
Public Type LInteger
lngLower As Long
lngUpper As Long
End Type
で受けた際に lngLower が負になることがあるのに最初は気付かず、
どうして正しい値にならないのかかなり悩みました。
この時に unsigned Long があったら良いのになと思いましたが、
それ以外ではおっしゃるように不便と思ったことはありません。
To: 【おじさま】 さん
> ところで、WSH の話題からは離れてしまうのですが、VB ってどう
> して unsigned がないのでしょう。私は VB 以外では DOS の頃
> の C を少し齧っただけなのですが、すくなくとも C ではまるで
> 当たり前な unsigned が、今の時代のプログラミング言語にない
> というのが少々不思議な気がします。
C に unsigned があるのはメモリアドレス値を扱うからだと思います。
たとえば、0番地からFFFFh番地までの64KBのメモリ空間は16ビットで
すむはずですが、unsinged がないと0番地から-1番地となってしまう
ので、倍の32ビット必要になってしまいます。また、7FFFh番地の次は
8000h番地なのに 7FFFh > 8000h となって具合が悪いですね。
型によって上限下限が決まっているので、扱う値によっては「unsigned
があれば収まるのになぁ」ということはあるかもしれませんが、それ以外
に必要だと感じることがVBで何かあるのでしょうか?
mira さん
レスありがとうございました。
>さすがにそれでは不便と見えて、VB7でサポートされることに
>なったみたいです。(^^;)
あっ、やっぱし・・・(^^;)。
> ところで、WSH の話題からは離れてしまうのですが、VB ってどう
> して unsigned がないのでしょう。私は VB 以外では DOS の頃
さすがにそれでは不便と見えて、VB7でサポートされることに
なったみたいです。(^^;)
AKiOS さん
>多倍長整数型だと思います。
ありがとうございます。私にとっては全くの初耳でした。難しい
名前ですね。覚えられるかどうか・・・・(^^;)
>処理系依存ですが VC++ や BC++ なら __int64 がありますね。
やっぱりあるんですね。次の VB(含 VBScript)ではサポートし
て欲しいです。
ところで、WSH の話題からは離れてしまうのですが、VB ってどう
して unsigned がないのでしょう。私は VB 以外では DOS の頃
の C を少し齧っただけなのですが、すくなくとも C ではまるで
当たり前な unsigned が、今の時代のプログラミング言語にない
というのが少々不思議な気がします。
何か BASIC の歴史的背景みたいなものがあるんでしょうか。また
他の言語ではどうなのでしょうか。符号なしの概念はあって当たり
前のものですか。それとも C が特殊で、多くの言語は VB みたい
に unsigned を持っていないのでしょうか。
To: 【おじさま】 さん
> VBS も含めて VB 系で Large Integer(日本語では何て言うんでしょう
> ・・・・大整数型?)という変数の型がサポートされたら話は早いのです
> が。
多倍長整数型だと思います。
> C++ には Large Integer ってあるんでしょうか?
処理系依存ですが VC++ や BC++ なら __int64 がありますね。
管理人むたぐちさん
正しいやり方かどうかは分かりませんが、私がやっているのは
事前の準備として
Public Type LInteger 'PULARGE_INTEGER
lngLower As Long '下位データ
lngUpper As Long '上位データ
End Type
Public Declare Function GetDiskFreeSpaceEx Lib "Kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As LInteger, ByRef lpTotalNumberOfBytes As LInteger, ByRef lpTotalNumberOfFreeBytes As LInteger) As Long
こうしておいて、さらに符号付き長整数型である下位バイトが負に
なった場合の対処として
Private Function CuCur(ByRef lngNum As Long) As Currency
Dim strHex As String
strHex = Hex(lngNum)
If Len(strHex) < 8& Then '先頭ビットが必ず 0 ならば
CuCur = CCur(lngNum)
Else
CuCur = CCur("&H" & Left(strHex, 4&)) * CCur(&H10000) + CCur("&H" & Right(strHex, 4&))
End If
End Function
こんな関数を作っておいて
Dim lngRet As Long
Dim linFreeBytesAvailableToCaller As LInteger
Dim linTotalNumberOfBytes As LInteger
Dim linTotalNumberOfFreeBytes As LInteger
Dim curFreeSpace As Currency
Dim curTotalSpace As Currency
lngRet = GetDiskFreeSpaceEx("C:\", linFreeBytesAvailableToCaller, linTotalNumberOfBytes, linTotalNumberOfFreeBytes)
curFreeSpace = CCur(linFreeBytesAvailableToCaller.lngUpper) * CCur(&H10000) * CCur(&H10000) + CuCur(linFreeBytesAvailableToCaller.lngLower)
curTotalSpace = CCur(linTotalNumberOfBytes.lngUpper) * CCur(&H10000) * CCur(&H10000) + CuCur(linTotalNumberOfBytes.lngLower)
これで curTotalSpace と curFreeSpace に C:\ の総容量と
空き容量が得られます。
いきなり Currency だとどうなるのか
Public Declare Function GetDiskFreeSpaceEx Lib "Kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As Currency, ByRef lpTotalNumberOfBytes As Currency, ByRef lpTotalNumberOfFreeBytes As Currency) As Long
としてやってみますと、これも得られた値に 10000 を掛けて
やると問題ないようで、こっちのほうがやりやすいかもしれま
せん。
To: 【おじさま】 さん
> DynaCall を使ったことがないので何とも言えませんが、変数の型
> の問題だと Empty のままというよりも、変な値になるのほうが起
> こり得るような気がします・・・・気がするだけで全く自信はあり
> ませんが(^^;)。
こんなコードを書いていました。↓
引数の指定とか、非常に怪しいです。
一応、"C:\"のところを存在しないパスに変えるとエラーになるので、関数自体は
動作していると思うのですが…。
VBではどう書くのか、教えていただけないでしょうか。
Set UserWrap = CreateObject("DynamicWrapper")
UserWrap.Register "kernel32", "GetDiskFreeSpaceExA", "I=slll","f=s","r=l"
ret = UserWrap.GetDiskFreeSpaceExA("C:\",lpFreeBytesAvailableToCaller,lpTotalNumberOfBytes,lpTotalNumberOfFreeBytes)
If ret=0 Then
MsgBox "エラーが発生しました"
Else
MsgBox lpFreeBytesAvailableToCaller & vbTab & lpTotalNumberOfBytes & vbTab & lpTotalNumberOfFreeBytes
End If
管理人むたぐちさん
>これも変数の型の問題ですかねえ…。
DynaCall を使ったことがないので何とも言えませんが、変数の型
の問題だと Empty のままというよりも、変な値になるのほうが起
こり得るような気がします・・・・気がするだけで全く自信はあり
ませんが(^^;)。
To: 【おじさま】 さん
> TotalSize を何で受けるかが結構問題ですよね。GetDiskFreeSpaceEx
> だと 64 ビットの Large Integer(それも符号なしのだったと思いま
> す)ですから、そのままひょいと単純に受け取れる変数の型がないです。
実は、DynaCallを使って、GetDiskFreeSpaceExを呼び出してみたのですが、
関数自体は成功するものの(返り値により判断)、各引数に値が
格納されていませんでした。
(Emptyのまま)
これも変数の型の問題ですかねえ…。
To: まさやん さん
> WMIに興味があるのですが、
> VBSのようにマニュアルはあるのでしょうか?
英語版ですが、あります。SDKに含まれています。
URLは「リンク」のページに書いていますので、そこからどうぞ。
WMIを使用すれば「プロセスの終了」は、
簡単に実現できますね。
ありがとうございます。
WMIに興味があるのですが、
VBSのようにマニュアルはあるのでしょうか?
マイクロソフトのホームページにいきましたが、
見つかりませんでした。
管理人むたぐちさん
>GetDiskFreeSpaceEx関数なら対応しているのですが。
TotalSize を何で受けるかが結構問題ですよね。GetDiskFreeSpaceEx
だと 64 ビットの Large Integer(それも符号なしのだったと思いま
す)ですから、そのままひょいと単純に受け取れる変数の型がないです。
GetDiskFreeSpaceEx を VB で使ったことがありますが、上位と下位を
それぞれ Long で受け取るとか(それにしても VB には符号なしがない
ので細工が必要)、無理矢理通貨型を使うとかしなければならなくて結
構面倒でした。
VBS も含めて VB 系で Large Integer(日本語では何て言うんでしょう
・・・・大整数型?)という変数の型がサポートされたら話は早いのです
が。そうなればきっと内部は大整数型(^^;)のバリアント型で返しますと
かいって GetDiskFreeSpaceEx を使った TotalSize を取得できる機能
が VBS にもあっさり付いてくるんでしょうけど。
C++ には Large Integer ってあるんでしょうか?
To: aMI さん
> Drive オブジェクトの
> TotalSize プロパティあたりの容量系のものって
> 2G以上を正常に取り扱えないのでしょうか。
そのとおりです。
これはWindow Script5.5でも直っていないのです。
おそらく、内部的にGetDiskFreeSpace関数(API関数)などを使っているためでしょう。
GetDiskFreeSpaceEx関数なら対応しているのですが。
> それとも何か方法があるんでしょうか??
WMIを使えば可能です。
s="ドライブ名" & vbTab & "容量" & vbTab & "空き領域" & vbTab & "ファイルシステム" & vbCrLf
Set DiskSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_LogicalDisk where DriveType=3")
For Each Disk In DiskSet
s = s & Disk.Name & vbTab & ModifySize(Disk.Size) & vbTab & ModifySize(Disk.FreeSpace) & vbTab & Disk.FileSystem & vbTab & vbCrLf
Next
MsgBox s
Function ModifySize(sz)
If sz >= 1073741824 Then
ModifySize = CSng(Left(sz/1073741824,4)) & "GB"
ElseIf sz >= 1048576 Then
ModifySize = CSng(Left(sz/1048576,4)) & "MB"
ElseIf sz >= 1024 Then
ModifySize = CSng(Left(sz/1024,4)) & "KB"
Else
ModifySize = FormatNumber(sz,0) & "バイト"
End If
End Function
Drive オブジェクトの
TotalSize プロパティあたりの容量系のものって
2G以上を正常に取り扱えないのでしょうか。
すくなくともヘルプには
そういう制限事項は見当たらないように思うんですが。
だめなんでしょうか?
それとも何か方法があるんでしょうか??
COMオブジェクトとしても扱える付箋ソフト・カレンダーソフトって
ありませんでしょうか。
それか、データをテキスト形式で保存するか、コマンドラインからテキスト形式に
インポート/テキスト形式からエクスポートできるやつ…。
情報、お待ちしています。
To: 梨 さん
> 1つのフォームに2つのフレームを読み込んでいるとき、
> 片方のフォームの、リンクをはっている所をクリックしたときに
> そのリンク先の文字を変数として、もう一つのフォームに渡すことは可能でしょうか?
ちょっと質問の意味を取り違えているかもしれませんが…。
可能だと思います。
formのonclickイベントで、<a>タグのhref属性の値を読み取り、もうひとつのformに
渡せばいいでしょう。
Sub form1_onclick()
If window.event.srcElement.tagName="A" Then
oEvent.ReturnValue = False
form2.text1.value=window.event.srcElement.href
End If
End Sub
To: まさやん さん
> kill.exeの使用方法を教えて頂きたいのですが。
> Runメソッドで実行するということでしょうか?
リソースキットに入っているという話を聞いたことがあるだけで、
私も詳細は知りません。
Runメソッドで実行すればいいとは思います。
WMIを使えば、プロセスを列挙し、ある条件を満たすもののみ終了させる、
とかが可能になります。
To: Sydney さん
> カウンタ77777踏みました〜!!
> 始めて来ていきなり
> こんなんでなんかすげ〜うれしいです!!
おめでとうございます。
キリ番GET報告なんて初めてですよ(^^;
とくに特典とかありませんけど…。なんかスクリプトでも作りましょうか? (笑)
カウンタ77777踏みました〜!!
始めて来ていきなり
こんなんでなんかすげ〜うれしいです!!
ご回答ありがとうございます。
VBS単体では、プロセス終了は難しいようですね。
>WMIを使えば可能なのですが、いきなり応用問題になってしまいます…。
WMIについては、自分で調べてみます。
>WinNT用のkill.exe(.com?)があるそうなので、そちらを利用するのはいかがでしょうか。
kill.exeの使用方法を教えて頂きたいのですが。
Runメソッドで実行するということでしょうか?
宜しくお願い致します。
おはようございます。
またまた質問で申し訳ありませんが、
1つのフォームに2つのフレームを読み込んでいるとき、
片方のフォームの、リンクをはっている所をクリックしたときに
そのリンク先の文字を変数として、もう一つのフォームに渡すことは可能でしょうか?
また可能であるならば、どういうスクリプトを書けば良いのでしょうか?
もしわかるようでしたら、教えてください。
よろしくお願いします。
To: K さん
> WSHで現在開いているInternet Explorerを全て閉じることは、
> 可能でしょうか?
「ダウンロード」ページにある、「すべてのフォルダウィンドウを閉じる」という
スクリプトをちょっと改造すれば可能です。
この掲示板の過去記事に、HTMLドキュメントを表示したウィンドウであるかフォルダ
ウィンドウであるかを区別する方法(具体的には、typename(window.document)を見る)が
あるので、そちらを組み合わせればOKです。
(記事リスト18ですが、ちょっとわかりにくいかも…)
To: まさやん さん
> VBScriptで「プロセスを終了する方法」が分からず困っています。
> 上記の方法を制御するメソッドは無いのでしょうか?
>
> ちなみに動作環境はNT4.0です。
WMIを使えば可能なのですが、いきなり応用問題になってしまいます…。
WinNT用のkill.exe(.com?)があるそうなので、そちらを利用するのはいかがでしょうか。
> タスクマネージャを起動してデフォルトのタグを
> 「プロセス」にする方法を教えて下さい。
申し訳ありませんが、ちょっとわかりません。
# コンパネなら、そういう制御はコマンドラインから可能なんですが。
To: アステカ さん
> VBからWSHを使って、アプリケーションを起動・終了をさせるにはどうすればよいですか?
VBからですか…。
shell関数やShellExecute関数(API関数)では駄目なんでしょうか?
WSHのコンポーネントを使う場合は、WshShell.Runで起動できます。
終了させることはできません。
2000年 09月 25日 10時 33分 11秒 の記事に関連して、
質問があります。
タスクマネージャを起動してデフォルトのタグを
「プロセス」にする方法を教えて下さい。
下記の方法では、上手くいきませんでした。
Dim WSHScript
Set WSHScript = CreateObject("WScript.Shell")
WSHShell.Run "TASKMGR.EXE , 1", 1, FALSE
^^^
タスクマネージャのタグは、前回の情報を保持しているよう
なので、起動時のタグを必ず「プロセス」になるように
指定したいと考えています。
ご回答宜しくお願い致します。
管理人さん、こんにちは! はじめて投稿します。
教えてください。m(__)m
VBからWSHを使って、アプリケーションを起動・終了をさせるにはどうすればよいですか?
宜しくお願いします。m(__)m
To: seraphy さん
いやぁこれは凄い。
サンプル動かしてみて
「これが作れるんだ」と思うとワクワクしました。
とりあえず自分であれこれ試してみたいと思います。
素晴らしいプロダクツの開発&紹介ありがとうございます。
WSHでGUIっぽいことやりたいと思ってる人は要チェックですぞ!!
はじめまして。
VBScriptは、昨日今日使い始めたばかりの初心者です。
単純な質問で申し分けありませんが、お教え下さい。
VBScriptで「プロセスを終了する方法」が分からず困っています。
上記の方法を制御するメソッドは無いのでしょうか?
ちなみに動作環境はNT4.0です。
タスクマネージャを制御すれば出来そうな気がするのですが・・・。
ご回答宜しくお願い致します。
WSHで現在開いているInternet Explorerを全て閉じることは、
可能でしょうか?
セキュリティ設定が必要でも可です。
返信遅れました。すみません > ALL
To: seraphy さん
> Win98/2000では標準で使えるスクリプトということでWSHをいろいろ使ってゆきたいと考えて、ウィンドウの生成、描画、イベント応答を管理するスクリプトを作ってみてベータ版を公開したのですが、
> わたしのサイトへのアクセス数が少ないこともあって、あまり反応がありません。
> 宣伝のようで恐縮なのですが、もし、興味のある方は試してみていただけないでしょうか?
> きっとお役に立つと思うのですが。
seraphyさん作のSeraphyScriptDialogは、以前この掲示板でも紹介がありましたが、
このSeraphyScriptToolsは、その後継にあたるコンポーネントになりますね。
ツリービューやリストビュー、メニューなどが使用可能なダイアログを設計・表示
でき、なかなか凝ったダイアログが作れそうです。
興味のある方は、使ってみてはいかがでしょうか。
To: rino さん
> 質問ですが、WSHでアドレス帳を開くのに、
> CLSIDを使って開くにはどうしたらいいのでしょうか?
CLSIDを使って、とは具体的にどういう意味なのでしょうか。
また、アドレス帳というのは、何のアプリのアドレス帳でしょうか。
Outlook Expressなら、どうもできないようですが、Outlookならできるかもしれません。
To: れん さん
> 再び質問なのですが、HTMLにてサーバー上のファイルをダウンロードする時に
> クライアントのフォルダ指定を行うことは可能なのでしょうか?
これはASPの話でしょうか。クライアントスクリプトの話でしょうか。
それと、ダウンロードはどういう方法で行わせるのでしょうか。
単にリンクをクリック、とか?
クライアント側の話なら、たぶんレジストリをいじってやる必要があると思います。
HKEY_CURRENT_USER\Software\Microsoft\Internet ExplorerキーのDownload Directory
かな?
ASPの場合はよくわかりません。
To: あい さん
> </SCRIPT>
少なくともこれは要りませんね。
> 自分のマシンで同様のコピースクリプトを動かすと正常に動作して
> ファイルもコピーできます。サーバー上のファイルで実施する場合がうまく
> いきません,.。
FileSystemObjectって、ネットワーク上のファイルを操作できましたっけ?
# できたような気もするのですが…。
Shellオブジェクトなら、\\ネットワーク上のコンピュータ名\ディレクトリ\test.xls
の形式でコピー先を指定できることを確認しています。
Shellオブジェクトに関しては、「オブジェクトの解説」をどうぞ。
To: フーター さん
> VBで作成したプログラムをWSHから起動させようとおもっているのですが、
> そのプログラムが、INIファイルを使っているようで「INIファイルが所定の
> 場所に存在しません」のエラーメッセージが出てしまいます。
単に、INIファイルを用意してやればいいだけの話だと思うのですが…。
もし、INIファイルがあるのにもかかわらず、このメッセージが出るのなら、
作業フォルダ指定が必要なのかもしれません。
といっても、WshShell.Runでは作業フォルダ指定ができないので、
ショートカットを作ってやり(WSHからでも、手動でも)、そのショートカットを
Runしてやりましょう。
Win2000ならIShellDispatch2オブジェクトのShellExecuteメソッドを使えば、
作業フォルダ指定して実行することもできます。
こんにちは、WSHの初心者なので教えて下さい。
VBで作成したプログラムをWSHから起動させようとおもっているのですが、
そのプログラムが、INIファイルを使っているようで「INIファイルが所定の
場所に存在しません」のエラーメッセージが出てしまいます。
どうしたらよいのでしょうか?
お願いします。 急いでいます。
↓の投稿の追加ですが、
ファイル名を
\\ネットワーク上のコンピュータ名\ディレクトリ\test.xls
として開いてみようとしたところ、
「\\ネットワーク上のコンピュータ名\ディレクトリ\test.xlsが見つかりません」
というエラーになります..。実際ファイルは存在しており、「ファイル名を指定して実行」からは起動することができます。
こんにちは。
ファイルコピーの件ですが、sourceファイル名がnullだったため
(実際のソースではCASE文で設定振り分けをしていました)
>> プロシージャの呼び出し、または引数が不正です。 行5
が出ていたようでした。すみません!お騒がせしました。
この件は分かったのですが、今度は
fs.CopyFile Source,Target,True
で、targetファイルが「見つかりません」とのエラーが出てしまいます。
現在このコピーのためのスクリプトを書いたファイルはサーバ上にあり
ます。このファイルの中で書いたコピー元ファイルおよびコピー先ファイルは
特にパスを指定しなければそのスクリプトが記述されたファイルと同じ
ディレクトリを参照していると思うのですが..。
自分のマシンで同様のコピースクリプトを動かすと正常に動作して
ファイルもコピーできます。サーバー上のファイルで実施する場合がうまく
いきません,.。
もし何か心あたりがありましたら、教えていただけると有りがたいです。
こんにちは。管理人むたぐちさん、お返事ありがとうございます。
>> やりたいことー既存ファイルを別のファイル名でコピーする
>> ------------------------
>> 1: FileAddress="d:\work\"
>> 2: Source = FileAddress&"format.xls"
>> 3: Target = FileAddress&"target.xls"
>> 4: Set fs = CreateObject("Scripting.FileSystemObject")
>> 5: fs.CopyFile Source,Target,True
>> ------------------------
>> プロシージャの呼び出し、または引数が不正です。 行5
>
>target.xlsに読取専用属性がついていませんか?
>
この場合、target.xlsは既新規に作成することになりますので、
属性設定は特にしておりません。また、Source.xlsにも読取専用属性は
ついていないです。
>また、
>Source = FileAddress & "format.xls"
>Target = FileAddress & "target.xls"
>のようにスペースを空けてみては?
試してみましたが、同じ現象のままでした..。
># 私の環境では、もとのままでも動作しましたが…
># あいさんのWSHのバージョンやOSなどの情報がほしいです。
>
OSは Windows98 4.10.1998 です。
WSHはダウンロードのページからダウンロードしたものを使って
います。
>> また、MsgBoxの実行もエラーになるのですが、何か設定が悪いのでしょうか。
>> たとえば、
>> ------------------------
>> MsgBox "処理が終了しました"
>> ------------------------
>> 書き込みできません。: 'MsgBox'
>
>みたことがない現象ですね。
>特定のバージョンのWSHには、InputBoxで空白にしてOKを押すとエラーになるとい>う
>バグがありますが…。
>
他に'InputBox'でも試してみたのですが、
「書き込みできません。」というエラーがでてしまいました。
初期設定がどこか悪いと思っているのですが、以下の
test.aspファイルで何か記述が足りないところなどありましたら
お教えいただけますでしょうか。
------------------------------------------
<%@ LANGUAGE = VBScript%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
Dim Msg
Msg=InputBox("何か入力してください")
MsgBox "入力は:"&Msg
%>
</SCRIPT>
</BODY>
</HTML>
------------------------------------------
よろしくお願いします。
To:管理人むたぐちさん
ご回答ありがとうございます。
再び質問なのですが、HTMLにてサーバー上のファイルをダウンロードする時に
クライアントのフォルダ指定を行うことは可能なのでしょうか?
よろしくお願いします。
むたぐちさん、こんばんは。
メールで質問してしまい、大変申し訳ございませんでした。
質問ですが、WSHでアドレス帳を開くのに、
CLSIDを使って開くにはどうしたらいいのでしょうか?
はじめて投稿させていただきます。
わたしはベクターのサイトでフリーウェアを、いくつか公開しているSeraphyと申します。
Win98/2000では標準で使えるスクリプトということでWSHをいろいろ使ってゆきたいと考えて、ウィンドウの生成、描画、イベント応答を管理するスクリプトを作ってみてベータ版を公開したのですが、
わたしのサイトへのアクセス数が少ないこともあって、あまり反応がありません。
宣伝のようで恐縮なのですが、もし、興味のある方は試してみていただけないでしょうか?
きっとお役に立つと思うのですが。
○新・WSHからクリップボードにアクセスする方法
例によってMLに投稿したやつの改良版です。
about:blankでもwindowオブジェクトが作成されるというのがミソです。
別途HTMLファイルを用意しなくてもいいところが、この方法の優れている点です。
Set Ie = WScript.CreateObject("InternetExplorer.Application")
Ie.Navigate "about:blank"
Do While Ie.Busy
Wscript.Sleep 10
Loop
Set oClip=Ie.Document.parentWindow.clipboardData
sData=oClip.getData("text")
If IsNull(sData) Then sData=""
sData=InputBox("クリップボードにコピーする文字列を入力してください",,sData)
If IsEmpty(sData) Then
ElseIf sData<>"" Then
oClip.setData "text",sData
Else
oClip.clearData "text"
End If
Ie.Quit
To: さとう さん
> --------------サンプル--------------------
> <%@ LANGUAGE ="VBScript" %>
> <%
> Set objShell = Server.CreateObject("Wscript.Shell")
> cmd = "d:\hoge\test.cmd"
> objShell.Run(cmd)
> ------------------------------------------
> この場合・・・この実行権限は、このサーバのシステムアカウント
> で実行されるのでしょうか?
そうだと思います。
> これを、ドメインユーザで実行する方法はないでしょうか?
クライアント側のスクリプト(普通にWebブラウザで実行するスクリプト)を
実行させればいいと思います。ただし、イントラネットゾーンの
セキュリティレベル(これはクライアント側のIEのもの)によっては、
WshShellを使ったスクリプトは実行されません。
もしくは、WMIを使う方法があります。
WMIを使うと、各ユーザーのシステム上にプロセスを立ち上げることができます。
To: れん さん
> ディレクトリの有無の確認と、ファイル名の取得方法がよくわかりません。
FileSystemObjectを使えば可能です。
FolderExistsメソッド、Filesコレクションなどをお調べください。
To: 梨 さん
> テーブルのセルに段数を表示したいのですが、どうすればよいのでしょうか?
> たとえば10段有るときに、1段ずつ1.2.3.4〜と表示したいのです。
> しかし条件で抽出しているので表示させる段数がその時により異なるので、
> そのまま純粋に
> <td>1</td>と書くことが出来ません。
trオブジェクトのinsertCellメソッドを使ってはいかがでしょうか。
たとえば
table1.rows(0).insertCell は、表の最初の行に列を追加し、tdオブジェクトを返します。
返り値のtdオブジェクトのinnerHTMLプロパティに、そのセルの内容を入れて
やればいいでしょう。
To: あい さん
> やりたいことー既存ファイルを別のファイル名でコピーする
> ------------------------
> 1: FileAddress="d:\work\"
> 2: Source = FileAddress&"format.xls"
> 3: Target = FileAddress&"target.xls"
> 4: Set fs = CreateObject("Scripting.FileSystemObject")
> 5: fs.CopyFile Source,Target,True
> ------------------------
> プロシージャの呼び出し、または引数が不正です。 行5
target.xlsに読取専用属性がついていませんか?
また、
Source = FileAddress & "format.xls"
Target = FileAddress & "target.xls"
のようにスペースを空けてみては?
# 私の環境では、もとのままでも動作しましたが…
# あいさんのWSHのバージョンやOSなどの情報がほしいです。
> また、MsgBoxの実行もエラーになるのですが、何か設定が悪いのでしょうか。
> たとえば、
> ------------------------
> MsgBox "処理が終了しました"
> ------------------------
> 書き込みできません。: 'MsgBox'
みたことがない現象ですね。
特定のバージョンのWSHには、InputBoxで空白にしてOKを押すとエラーになるという
バグがありますが…。
こんにちは。初めて書きこみさせていただきます。
WSH超初心者のあいと申します。
ファイルコピーをするためWSHで書いてみたのですが、エラーがでてしまいます。
もし何かお気づきの点があればご教授いただけるとうれしいです。
やりたいことー既存ファイルを別のファイル名でコピーする
------------------------
1: FileAddress="d:\work\"
2: Source = FileAddress&"format.xls"
3: Target = FileAddress&"target.xls"
4: Set fs = CreateObject("Scripting.FileSystemObject")
5: fs.CopyFile Source,Target,True
------------------------
プロシージャの呼び出し、または引数が不正です。 行5
また、MsgBoxの実行もエラーになるのですが、何か設定が悪いのでしょうか。
たとえば、
------------------------
MsgBox "処理が終了しました"
------------------------
書き込みできません。: 'MsgBox'
となります。
もし何かご存知の方がいらっしゃいましたら、よろしくお願いいたします。
先ほどはいきなり質問してすみません。m(_ _)m
はじめましてです。
テーブルのセルに段数を表示したいのですが、どうすればよいのでしょうか?
たとえば10段有るときに、1段ずつ1.2.3.4〜と表示したいのです。
しかし条件で抽出しているので表示させる段数がその時により異なるので、
そのまま純粋に
<td>1</td>と書くことが出来ません。
スクリプトは初心者なので、どう手を出して良いものか悩んでます。
よろしくお願いします。
はじめまして、れんと申します。
HTMLよりサーバー上のVBSファイルを呼び、
サーバー上のファイル検索をかけたいのですが、
相対パスをレジストリーより取得し、
そのパス内に存在するファイル名をすべて取得したいのですが、
レジストリから相対パスを抜き出すことはできるのですが、
ディレクトリの有無の確認と、ファイル名の取得方法がよくわかりません。
どなたかご教授お願いいたします。
はじめまして・・さとうと申します。
WSHについて、教えてください
Web(ASP)から以下のようにサーバ内のコマンドファイルを起動
しています
--------------サンプル--------------------
<%@ LANGUAGE ="VBScript" %>
<%
Set objShell = Server.CreateObject("Wscript.Shell")
cmd = "d:\hoge\test.cmd"
objShell.Run(cmd)
------------------------------------------
この場合・・・この実行権限は、このサーバのシステムアカウント
で実行されるのでしょうか?
ちなみに、このサーバはAAAA DOMのメンバーサーバです
もし、そうだとしたら・・・・・
これを、ドメインユーザで実行する方法はないでしょうか?
よろしく、お願いいたします
To:管理人むたぐちさん
ありがとうございます。
過去記事を参考にしてみます。
To: しんたろう さん
> クライアントサイドのVBスクリプトより、Wscriptにて作成したVBSファイルを
> 呼ぶにはどのようにしたらよろしいのでしょうか?
クライアントサイドというと、HTML中のVBSのことでしょうか?
HTML中のVBSから、アプリケーションを実行(この場合はWSHを実行)する場合は、
WSHのコンポーネントを利用する(具体的には、WshShell.Run "hoge.vbs"のようにする)
必要がありますが、これにはセキュリティ上の制限があります。
詳しくは、この掲示板で何度も話題となっていますので、過去記事を参考にして
ください。
>>ドキュメントはなく、実行ファイルだけならメールでお送りする
是非おねがいします
To: Makoto さん
> >>残念なお知らせなんですが、IE5.5では非表示モードでHTAファイル
> >>の実行ができないことがわかりました(必ず表示されてしまう)。
>
> これ、待ってたんですが、残念です...
> IE 5.0 限定で公開するのはダメですか?
ドキュメントはなく、実行ファイルだけならメールでお送りする
ことはできますが。