OfficeのFileSearchクラスの話がでてきたので、便乗質問させていただきます。
【やりたいこと】
Cドライブに拡張子.xlsのファイルがどのくらいあるかリストする。
【書いてみたソース】
------------------------------------------------
Option Explicit
Dim oExcel, oFileSearch, vPath
Set oExcel = CreateObject("Excel.Application")
Set oFileSearch = oExcel.Application.FileSearch
With oFileSearch
.NewSearch
.LookIn = "C:\"
.FileName = "*.xls"
.SearchSubFolders = True
If .Execute() <> 0 Then
For Each vPath In .FoundFiles
WScript.Echo vpath
Next
End If
End With
------------------------------------------------
【困っていること】
・なぜか同じパスのファイルが複数出力されているのがある。
・同じネットワークにあるファイルサーバのエクセルファイルも
UNC表記でリストされる。
なにかOffice.FileSearchの使い方を間違っているのでしょうか?
>初心者 さん 2006年 10月 17日 11時 33分 07秒
FSOでは無理ですが、OfficeのFileSearchクラスを使用するといいのでは?もちろん何らかのOffice製品がインストールされていなければなりませんが・・・。こちらを使用すると、FSOでアクセスで引っ掛かったフォルダ内も問題なく検索できました。
To 初心者 さん 2006年 10月 17日 11時 33分 07秒
> ファイルループでアクセスできない時、そのパスが取得できません。
これ、ACL で引っかかっているんですから、どうやっても知りようがありません。
知ることができたら脆弱性です。
ファイルループでアクセスできない時、そのパスが取得できません。
エラーファイルのパスの取得はどうすればできるのでしょうか?
よろしくお願いします。
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set objDir = Fs.GetFolder("c:\vbs")
Set objFile = objDir.Files
On Error Resume Next
For Each fl1 In objFile
If Err.Number = 70 Then
msgbox ("アクセスNG")'ここでファイルパスが知りたいのです。
Else
msgbox ("アクセスOK " & fl1.Path)
End IF
Next
条件 普通二種自動車運転免許所持者(1種のみでも可)
時間 PM7時〜AM4時半 又はPM8時〜AM2時 又はPM9時〜AM3時
給料 PM7時〜の場合 日給8000円〜 PM8、9時〜の場合 日給6000円〜
TEL 0120−198−883
本社は運転代行の古い歴史と伝統を保ち、飲酒運転撲滅を目指し日々お客様と接しています。本社で是非働いてみてはいかがでしょうか。お電話お待ちしております。
ありがとうございます。
そうですか、スクリプトでマウス操作はできないのですねぇ。それは困りました。
サイトがどのようにしているのか分かりませんが、教えて頂いた方法でドキュメ
ントの内容を表示すると肝心なところは表示されないんです。
会員でないとみることのできないサイトなのでお見せできないのが非常に残念
です。
>tetsu さん 2006年 10月 05日 23時 27分 13秒
まず、以下のことをご認識ください。
・WSHの標準の機能では、スクリプトによるマウス操作はできない。
※私の認識が違っているかもしれません。ツッコミよろしくお願いします。
マウス操作するためには
・マウスを制御できるツール(例:UWSCとか。)と組み合わせる。
・APIを実行するラッパークラスを利用する。
とかですね。どっちも簡単ではないです。
ところで、
>ドキュメントの内容も表示されましたが、これだとだめなサイトなのです。
これは何故でしょう?取得したい部分のテキストがPDFとかの別形式?
a3さん
望みのIEを見つけるところまでできました。ありがとうございます。
ドキュメントの内容も表示されましたが、これだとだめなサイトなのです。
なので、やはり特定の座標をダブルクリック→選択された単語をコピー
としたいのです。
よろしくお願いします。
ありがとうございます。感謝します。
スキルがなくて、なかなか理解できないのですが、じっくり考えてみます。
IEの特定の座標(文章が書かれているところ)をダブルクリックすると
ひらがな、カタカナ、数字であれば、単語が選ばれますね。この単語を
コピーしたいのです。ウィンドウはスクロールしないものとします。
> tetsu さん 2006年 10月 05日 09時 55分 29秒
前半だけ(タイトルでIE検索)ですが、サンプルです。
※最初に見つけたところで検索打ち切りしてます。
------------------------
Dim objWindow
Dim shell
Set shell = CreateObject("Shell.Application")
For Each objWindow In shell.Windows
If TypeName(objWindow.document) = "HTMLDocument" Then
WScript.Echo objWindow.LocationName
'ここでタイトルをチェック。(以下、例)
If objWindow.LocationName = "WSH Lab. 掲示板" Then
Msgbox "「WSH Lab. 掲示板」を開いているIE発見!", , "みつけたよ!"
'見つけたIEに対する処理を以下へ。
'※とりあえず、ドキュメントの内容を表示してみる。
WScript.Echo objWindow.document.documentElement.outerText
Exit For
End If
End If
Next
------------------------
後半は・・・かかれている処理の意図がよくわかりませんです。
※たとえば、スクロールしてたら特定座標の下になにがあるかわかりませんです。
documentオブジェクトが取得できているので、
例に出したとおり、ドキュメントの内容を取得するのは可能ですけどね。
いきなり質問ですみません。
以下のプログラムをスクリプトしたいのですが、ご教示いただけないでしょうか?
複数起動されているIEから、特定のIEを見つけ出し(タイトル等で
判断したい)、そのIEの特定の座標をダブルクリックし、その単語を
コピーする。そして、Excelの特定のカラムにペーストする。
これだけなのですが、どうしてよいやらさっぱりです。
どうかお願いいたします。
a3さん回答ありがとうございました。
> すみません、私の返答の仕方が悪かったようです。
> ※"C:\Program "ファイルってやばい!という思いが先走りすぎました。
いいえこちらでも
起動時に C:\Program と言うファイルがあります。・・・
と言う警告が出るようになったので、即座に削除して、とりあえず半角スペースの
無いフォルダに退避させてました。
>
> (1)わざわざプログラムで連結しなくても、引数を""でくくっておくと
> sTempFileName=WScript.Arguments(0)でブランクを含んだパスを取得できます。
そうですね。今やってみたら全体が取得できました。
前回のテストは何かおかしいことを私がやってたんでしょうねぇ。(^_^;)
>
> (2)そもそも、楽々園の秀さんの質問は
> 「書き出さない様に致したく」でしたので、私の書き込みは回答になってませんでした。
>
> WshLab.iniの該当部分を以下のようにすれば、書き出さないと思います。
> (元)download.command=wscript.exe wshbbs.vbs /%tmpfile%
> (新)download.command=wscript.exe wshbbs.vbs
正しい動作はがどうなるのか理解できていなかったので、短絡的になんで出てくるの?
と言う思いからこんな書き方になってしまいました。
もっとしっかりコードを解析してから質問すべきでした。
>
> 以上、ごめんなさいでした。
いえいえ。どうもありがとうございました。
管理人むたぐちさん
wshbbs.vbs 改訂ありがとうごさいました。
早速ダウンロードさせていただきました。
Windows PowerShell RC2 公開開始
http://blogs.wankuma.com/mutaguchi/archive/2006/09/28/39914.asp
されましたねー。# ブログのほうもよかったらコメントください。
wshbbs.vbsに関しては、a3さんの記述法を採用したものを再アップしておきました。
ご報告ありがとうございました。
お世話になっております。
VBScriptからエクセルファイルを作成したいのですが、
サーバーにエクセルがインストールされていません。
CreateObject( "Excel.Application" )
はエクセルがインストールされていないと利用できないようです。
どなたか、他の方法でエクセルを作成する方法を
ご教授いただけないでしょうか。
よろしくお願いいたします。
>らいど さん 2006年 09月 17日 05時 07分 08秒
私も同じ現象に出くわしたことがあります。
>Windowsタスクの実行パス:
>c:\arg.vbs /a:alpha /b:beta china /d:delta english
この部分を
Cscript c:\arg.vbs /a:alpha /b:beta china /d:delta english
Wscript c:\arg.vbs /a:alpha /b:beta china /d:delta english
と明示的に記載すると、引数を取れると思います。
お試しください。
>楽々園の秀 さん
すみません、私の返答の仕方が悪かったようです。
※"C:\Program "ファイルってやばい!という思いが先走りすぎました。
(1)わざわざプログラムで連結しなくても、引数を""でくくっておくと
sTempFileName=WScript.Arguments(0)でブランクを含んだパスを取得できます。
(2)そもそも、楽々園の秀さんの質問は
「書き出さない様に致したく」でしたので、私の書き込みは回答になってませんでした。
WshLab.iniの該当部分を以下のようにすれば、書き出さないと思います。
(元)download.command=wscript.exe wshbbs.vbs /%tmpfile%
(新)download.command=wscript.exe wshbbs.vbs
以上、ごめんなさいでした。
はじめまして、junと申します。
インターネットの掲示板でVBスクリプトについて教えて下さる。ホームページがあるということで投稿しました。なんせ初心者なので過去ログなどを見てもさっぱりわかりません。どなたかわかりやすく教えていただけませんでしょうか?
任意のフォルダーの中にtest.zipとそれを展開したtestフォルダーがあります。それらを検索して削除し、さらにゴミ箱からも削除したいのですが、
具体的なコードを教えていただけませんでしょうか、お願いします。
あんのうん さん 助かりました。有り難うございました。
今後とも宜しくお願いいたします。
To aki_sp33 さん
ショートカットはWscript.ShellのCreateShortcutで作成でき、
CreateShortcutで既存の.lnkファイルを指定すると設定内容が
更新されます。
以下サンプルです。
-----------------------------------------------
Set loShell = Wscript.CreateObject("Wscript.Shell")
Set loSC = loShell.CreateShortcut("C:\TEST.lnk")
With loSC
.TargetPath = "C:\WINDOWS\NOTEPAD.EXE"
.Arguments = "C:\TEST.TXT"
.IconLocation = "C:\WINDOWS\NOTEPAD.EXE,0"
.Save
End With
Set loSC = Nothing
お助け下さい。
前にも投稿しましたが、ショートカットのリンク先と作業フォルダの変更をするVBScriptの記述の仕方がわかりません。過去の記事を検索して見てもさっぱりです。もしかすると不可能なのでしょうか?
どなたか無知な私を助けていただけませんでしょうか。
To: a3 さん
どうも回答ありがとうございました。
すみません。環境書き忘れていました。WinXP Pro SP2です。
結果から言いますと改善されませんでした。
""で囲まなくても引数はフルに来ていました。
""は安全側と言うことで現在付加したままにしています。
wshbbs.vbsの最後にあるSub ScriptQuit(sSaveMessage)にて
WScript.Arguments は引数を半角スペースで分割しているのですね。
sTempFileName=WScript.Arguments(0) で取得しているから最初の半角スペースまで
がファイル名になってしまいこの現象のとなっているようです。
下記の通りコードを追加、合成復元して解決しました。
なんか無理矢理な気がしますが、正しいですよね?
Sub ScriptQuit(sSaveMessage)
If WScript.Arguments.Count >0 Then
sTempFileName=WScript.Arguments(0)
If Left(sTempFileName,1)="/" Then
For i = 1 to WScript.Arguments.Count-1
' msgbox "sTempFileName" & i & WScript.Arguments(i)
sTempFileName = sTempFileName & " " & WScript.Arguments(i)
Next
sTempFileName=Right(sTempFileName,Len(sTempFileName)-1)
' msgbox "sTempFileName = " & sTempFileName
Set ts=Fs.CreateTextFile(sTempFileName,True)
ts.Write sSaveMessage
ts.Close
End If
End If
WScript.Quit
End Sub
> >楽々園の秀 さん
>
> wshbbs.vbsには
> >download.command=wscript.exe wshbbs.vbs /%tmpfile%
> と指定するよう書いてありますが、
>
> WshLab.hta & wshbbs.vbsの導入先が "C:\Program Files"の下にあると
> "C:\Program "ファイルができてしまいますね。
>
> ※このファイルがあると、サービスが起動しなかったり
> いろいろ問題がでることがありますので、対策しておく必要があると思います。
>
> 問題がないようにするには
> download.command=wscript.exe wshbbs.vbs /"%tmpfile%"
>
> と%tmpfile%を""で囲むと、問題がなくなると思います。
> 一度、お試しください。
>楽々園の秀 さん
wshbbs.vbsには
>download.command=wscript.exe wshbbs.vbs /%tmpfile%
と指定するよう書いてありますが、
WshLab.hta & wshbbs.vbsの導入先が "C:\Program Files"の下にあると
"C:\Program "ファイルができてしまいますね。
※このファイルがあると、サービスが起動しなかったり
いろいろ問題がでることがありますので、対策しておく必要があると思います。
問題がないようにするには
download.command=wscript.exe wshbbs.vbs /"%tmpfile%"
と%tmpfile%を""で囲むと、問題がなくなると思います。
一度、お試しください。
自己レスです。
Sub ScriptQuit(sSaveMessage)
に処理がありました。
どうも板汚し済みませんでした。
> To:管理人むたぐち様
>
> WSH Lab.hta と wshbbs.vbs を利用させていただいてます。
中略
> 書き出さない様に致したく、コードの教示をお願いします。
度々の訪問失礼します。
簡単なセットアッププログラムを作っております。
任意のホルダー"testFolder"の中にSetUp.vbsというスクリプトファイルがありこれを起動させることにより同じフォルダーの中にあるtest.vbs(VBS Script File), P.ico(アイコン)をC:\mkFolder\に移動し、tst(ショートカット[test.vbsのシートカット]),をディスクトップに移動するものなのですが、ホルダー"testFolder"をコピーした後このSetUp.vbsを起動すると当然のことながらtst(ショートカット)がコピー元のtest.vbs(VBS Script File)にリンクされます。これを回避するためにシートカットのリンクの変更もしくは新しくショートカットを作るコードを教えて頂きたいのですが
ちなみに下記は、SetUp.vbsのコードです。
-------------------------------------------------------------------
Dim scrDir 'As String
Dim ink 'As String
Dim vbs 'As String
Dim ico 'As String
Dim fs 'As String
Dim FlDPass 'As String
Dim opnPath 'As String
CreateObject("Scripting.FileSystemObject").CreateFolder "C:\mkFolder\"
scrDir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
If Right(scrDir, 1) <> "\" Then
scrDir = scrDir & "\"
End If
ink = scrDir & "\" & "test.lnk"
vbs = scrDir & "\" & "test.vbs"
ico = scrDir & "\" & "P.ico"
Set fs = CreateObject("Scripting.FileSystemObject")
FlDPass = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
fs.MoveFile ink, FlDPass
fs.MoveFile vbs, "C:\mkFolder\"
fs.MoveFile ico, "C:\mkFolder\"
--------------------------------------------------------------------
宜しくお願い致します。
palazzo さん。お礼が遅くなりすみませんでた。
<CreateObject("Scripting.FileSystemObject").CreateFolder "c:\Mkfoldr\">
に訂正したところ動くようになりました。
大変有り難うございました。
>aki_sp33 さん
すみません。
CreateObject("Scripting.FileSystemObject").CreateFolder "c:\Mkfoldr\"
です。IDから「S」が抜けていました。
palazzo さん。早速のご回答有り難うございます。
CreateObject("Scripting.FileSytemObject").CreateFolder "c:\Mkfoldr\"
を記述して実行してみましたが、エラーが発生します。
<エラー内容>
---------------------------------------------------------------
エラー:Activex コンポーネントは、オブジェクトを作成できません。
Scripting.FileSytemObject
コード:800A01AD
ソース:MicroSoft VBScrit 実行時エラー
---------------------------------------------------------------
初心者ですのでどう加工して記述すればよいのかわかりません。
記述方法を教えてくだされば幸いです。
>aki_sp33 さん
まず旧来のDLLのAPIの類はWSHからは直接参照できません。どうしても使用したいのなら、同等のAPIをラッピングしたActiveXDLLを作成する必要があります。
目的はフォルダを生成するだけのようですが、そのAPIに固執する必要があるのでしょうか。単純に目的を果たすだけなら、
CreateObject("Scripting.FileSytemObject").CreateFolder "c:\Mkfoldr\"
ではいけないのでしょうか。
度々の投稿失礼します。
VBAを使って下記のコードを作りましたが
VBScriptで記述したいのですが何方か教えて頂けませんでしょうか?
<Cドライブに新しく"Mkfoldr"というホルダーを作る>
Private Declare Function MakeSureDirectoryPathExists _
Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Sub Mkfoldr()
MakeSureDirectoryPathExists ("c:\Mkfoldr\")
End Sub
palazzo さん
見事、ExcelFileを開くことが出来ました。
誠に有り難うございました。
これからも御教授程宜しくお願いいたします。
みなさん、はじめまして
>ヒロ さん
WMIの機能で実現できます。サンプルはScriptomaticから作らせて頂きました。
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)
For Each objItem in colItems
If UCase(objItem.Name) = "EXCEL.EXE" Then
Wscript.Echo "Name: " & objItem.Name
Exit For
End If
Next
>aki_sp33さん
実行スクリプトパスを加工する事で把握できます。ファイル名は任意のものに置き換えて下さい。
Option Explicit
Const OPN_FILE = "test.xls" 'As String
Dim scrDir 'As String
Dim opnPath 'As String
scrDir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
If Right(scrDir, 1) <> "\" Then
scrDir = scrDir & "\"
End If
opnPath = scrDir & OPN_FILE
WScript.Echo opnPath
>らいど さん
確かに出来ませんね。スクリプトだとダメだという事なんでしょうか。試してはいませんが、MakeExeでスクリプトをExe形式にすると動くかも知れませんね。あと気になったのが、ArgNameはVBSやJSでは取得できないのでは?あれはWSFのXMLに記述するものなので。
こんにちは。
スクリプト実行時のコマンド引数の受け取り方について質問をさせて下さい。
これまではWshArguments(.Named/.UnNamed)を利用して特に問題なく引数を取得しておりました。しかし今回Windowsタスクからスクリプトを実行したところ引数が取得できなく困ってしまいました。
当初はWindowsタスクの方が引数を渡していないのかと思いましたがメモ帳の実行パスに引数としてファイル名を指定して実行したところ意図したファイルを開く事が出来ましたので受け取り方に不備があるのではないかと思えます。
Windowsタスクから引数の受け取り方、もしくはWshArguments(.Named/.UnNamed)以外での引数の受け取り方をご存知の方がおりましたら宜しくお願いします。
環境:w2000/wxp(h)
Windowsタスクの実行パス:
c:\arg.vbs /a:alpha /b:beta china /d:delta english
確認に使用したスクリプト(c:\arg.vbs):
set Arg = wscript.arguments
set ArgName = Arg.named
set ArgUnName = Arg.unnamed
'----------------------------
msg = msg & "Arg.count=" & Arg.count & vbCRLF
for i=0 to Arg.count-1
msg = msg & "Arg.item("&i&")=" & Arg.item(i) & vbCRLF
next
msg = msg & "ArgName.count=" & ArgName.count & vbCRLF
msg = msg & "ArgUnName.count=" & ArgUnName.count & vbCRLF
'----------------------------
wscript.echo msg
結果:
Arg.count=0
ArgName.count=0
ArgUnName.count=0
追加:
同様の実行パスを指定したショートカットからは問題なく引数が受け取れるのでWindowsタスクにショートカットファイルを指定してみましたが引数部分がきれいにカットされて実行ファイルパスのみで作成されてしまい代案にする事が出来ませんでした。
VBScriptの記述例を教えて下さい。
任意のホルダーにあるVBScript ScriptFileの現在のパスを調べ、同じホルダーの中にあるExcelワークシートを開くVBScriptの記述の仕方がわかりません。ExcelVBSを使うと簡単なんですが、マクロセキュリティーを回避してオープンさせたいので。ちなみにホルダー名は不特定です。どちら様か、ご伝授願います。
はじめまして。ヒロと申します。
WSHでエクセルが今、起動中かどうかを調べる手段はありますか?
どなたかご存知のかた教えてください。
To:管理人むたぐち様
WSH Lab.hta と wshbbs.vbs を利用させていただいてます。
先日気づいたのですが、両ファイルとログが保存してある
フォルダのルートに 取込完了時の メッセージが 拡張子なしの
テキストファイルとして保存されています。
ファイル名は保存パスが下記としますと
C:\Program Files\Wshbbs\wshbbs.vbs
C:\Program となります。
↑半角スペースがついています。
アクティブディレクトリーのネットワークドライブでも同様です。
保存されているメッセージの一例は 次の通りです。
新着記事はありませんでした。
このメッセージはwshbbs.vbsが出しているようなので、コードを
読んでみましたが、解読できず。
書き出さない様に致したく、コードの教示をお願いします。
a3さん こんにちは。
ありがとうございました。
たしかに、strGatewaymetric = Array(1)
とすることで、動作をすること、エラーがでないことを確認しました。
TAKA さんこんにちは。
ちょうど、同じような話がMSのサイトにありますね。
Hey, Scripting Guy!
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug04/hey0825.mspx
エラー行が14行ということで、
>errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
SetGatewaysメソッドがエラーになっていると推測をつけます。
Wbemtestを起動してクラスを開く- Win32_NetworkAdapterConfiguration して
SetGatewaysをダブルクリックしてInput引数を確認しますと
私のところの環境では
第1引数:DefaultIPGateway CIM_STRING|CIM_FLAG_ARRAY
第2引数:GatewayCostMetric CIM_UINT16|CIM_FLAG_ARRAY
となっています。
第2引数は数値の配列でなくてはいけないようです。
(元)strGatewaymetric = 1
(新)strGatewaymetric = Array(1)
でどうでしょうか?
WSHスクリプトでIPアドレスを変更するスクリプトを作成しました。
以下のようなスクリプトでIPアドレスを変更した際、
行:14
文字:5
エラー:種類が一致しません
コード:80041005
ソース:SWbemObject
というエラーになります。
-------------------------------------------------------------------
strComputer = "."
Set args = Wscript.Arguments
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.11.101")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("")
strGatewaymetric = 1
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
Next
--------------------------------------------------------------------
どこが間違ってますか?
以前は動いていたと思うのでなぜこのようになったのか・・・。
》msx さん 2006年 09月 08日 23時 25分 59秒
> はじめまして、VxEditorについてなんですが
> 圳というフォントが表示できないのですがこれは仕様なんでしょうか
圳 という事は、U+5733 …『{土}+{川}』の文字ですね。
VxEditor というのは知らなかったので、仕様かどうかは判断できませんが、
Vector でバージョン0.4.3.0をダウンロードして少し試してみたところ、
画面に表示できないだけではなく、『{土}+{川}』や、立法メートル『{m}^{3}』といった
ファイル名を開く事もできないようですね。
どうやら、文字コードとしては Unicode をサポートしているようですが、
対応している文字範囲は、Shift_JIS 範囲の文字に限られているように見えますね…。
はじめまして、VxEditorについてなんですが
圳というフォントが表示できないのですがこれは仕様なんでしょうか
板違いかも知れませんが、なにぶん本家のページが閉鎖されていますので
ご存知の方がいらっしゃいましたら、よろしくお願いします。
tom3さん、こんにちは。
>自作したCOMのDLLをWSHから呼び出す方法を教えてください。
参照設定を使うやり方は事前バインディングといいます。
もうひとつやり方があってそれは実行時バインディングといいます。
□事前バインディング(AccessVBAの場合)
参照設定したうえで
Dim bee1 As New bee
※上の式は以下のようにも書けます。
Dim bee1 As bee
Set bee1 = New bee
□実行時バインディング(AccessVBAの場合)
Dim bee1 As Object
Set bee1 = CreateObject("bee")
WSHは、実行時バインディングかつ変数の型宣言できませんので
VBScriptでかきますと、
Dim bee1
Set bee1 = CreateObject("bee")
のような形になると思われます。 ご参考まで。
追伸:変数名は勝手にbee1に変更しました。
変数名とオブジェクト名がごっちゃになるのが感覚的にいやなので。
(管理人により削除)
(管理人により削除)
魔界の仮面弁士さんへ
できました。助かりました。ありがとうございます。
VBScriptでRC4の暗号化・復号をおこなうスクリプトを作ってみました。せっかくなのでこちらにも。ただ、このままだとExcel・Wordの暗号化のような脆弱性を抱えてしまうので注意。実用の際はRC4そのものの弱点(WeekIVと呼ばれるもの)への対策も含めて少々魔改造した方が無難かも(そんなに手間ではないと思いますが、慎重さはもちろん必要です)。まあ、保証も何もないので、レクリエーションとしてのスクリプトと考えていただければ。
Function RC4(strPwd, hexText)
Dim arrState(255)
Dim arrKey(255)
intLength = Len(strPwd)
For i = 0 To 255
arrKey(i) = Asc(Mid(strPwd, (i Mod intLength)+1, 1))
arrState(i) = i
Next
j = 0
For i = 0 To 255
j = (j + arrState(i) + arrKey(i)) Mod 256
temp = arrState(i)
arrState(i) = arrState(j)
arrState(j) = temp
Next
i = 0
j = 0
For k = 1 To Len(hexText) Step 2
i = (i + 1) Mod 256
j = (j + arrState(i)) Mod 256
temp = arrState(i)
arrState(i) = arrState(j)
arrState(j) = temp
n = arrState((arrState(i) + arrState(j)) Mod 256)
bytNum = CByte("&H" & Mid(hexText, k, 2)) Xor n
result = result & Right("0" & Hex(bytNum), 2)
Next
RC4 = result
End Function
Function Text2Hex(strText)
For i = 1 to Len(strText)
hexText = Hex(Asc(Mid(strText, i, 1)))
If Len(hexText) = 1 Then hexText = "0" & hexText
result = result & hexText
Next
Text2Hex = result
End Function
Function Hex2Text(hexText)
intLength = Len(hexText)
flg = False
For i = 1 to Len(hexText) step 2
If flg Then
flg = False
Else
bytAsc = CByte("&H" & Mid(hexText, i, 2))
If (&H00 <= bytAsc And bytAsc <= &H80) Or _
(&HA0 <= bytAsc And bytAsc <= &HDF) Then
'1バイト文字の場合
strChr = Chr(bytAsc)
ElseIf (&H81 <= bytAsc And bytAsc <= &H9F) Or _
(&HE0 <= bytAsc And bytAsc <= &HFF) Then
'2バイト文字の場合
strChr = Chr(CInt("&H" & Mid(hexText, i, 4)))
flg = True
End If
result = result & strChr
End If
Next
Hex2Text = result
End Function
Function Encode(Pass, Source)
Encode = RC4(Pass, Text2Hex(Source))
End Function
Function Decode(Pass, Source)
Decode = Hex2Text(RC4(pass, Source))
End Function
'以下テスト用
data = "私はカモメ"
pass = "123456789"
R = Encode(pass, data)
MsgBox data & vbCrLf & R & vbCrLf & Decode(pass, R)
happy.lukky さん、こんにちは。
> vb6でいうところの、「chdir」と「ChDrive」はできるのでしょうか?
WshShell オブジェクトの CurrentDirectory プロパティを試してみてください。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb05/hey0201.mspx
http://www.microsoft.com/japan/technet/community/columns/scripts/sg0903.mspx
(管理人により削除)
こんにちは。
自作したCOMのDLLをWSHから呼び出す方法を教えてください。
ちなみにAccessのVBAでは参照設定で「ComSample」という名前が登録されていて、下記のようなコードで呼び出し可能です。
Dim bee As New bee
bee.FindFlower (Me.TextBox1)
お手数ですがよろしくお願いいたします。
こんにちわ。IStoreFolder / IStoreNamespace ってスクリプトからは使えないんでしょうかね。面白そうなんだけど。
素人の質問ですみません。
vb6でいうところの、「chdir」と「ChDrive」はできるのでしょうか?