過去ログにあった質問と全く同じ内容の質問です。
http://madia.world.coocan.jp/vb/vb_bbs/200212_02120020.html
過去ログの回答のリンク先のBBSには
その時期のログが消えてしまっております。
VB6.0にて、ディストリビューション・ウィザードで
VBScriptをVBに正しく参照させるにはどうすればよいでしょうか?
たしか、depファイルを手で書き換えればOKとの説もあるのですが、
VBScript(WSH)に関しては、IE(OS?)のバージョンに依存すること、また、
一部ファイルだけ配布して書き換えてしまうと、DLL間で不整合を起こす恐れがある
ことから、
・配布時には参照設定は外してレイトバインドにする。
・IE5以上をプログラムの動作条件として謳っておく。
・IEやWSHとして別途配布を行うこととし、ディストリビューションウィザード
による配布ファイルには含めない。
のが推奨されるかと思います。
WSHはここから入手できます。
http://www.asia.microsoft.com/japan/msdn/scripting/default.asp
もげさんご回答ありがとうございます。
しかし、正規表現での検索にMatchCollectionやMatchを使用しています。
参照設定をしないレイトバインドで
Dim objRegExp As New RegExp
は
Dim objRegExp As Object
Set objRegExp = CreateObject("VBScript.RegExp")
となりますが、
Dim mc As New MatchCollection
Dim mt As New Match
をCreateObjectする方法がわからないのですがご教授願えますでしょうか。
同じVBScript_RegExp_55のメンバなので
CreateObject("VBScript.MatchCollection")
で良いのかと思いきや、エラーとなってしまいます。
すみません。
Dim mc As New MatchCollection
Dim mt As New Match
↓
Dim mc As MatchCollection
Dim mt As Match
の間違いです。
Dim mc As Object
Dim mt As Object
または、
Dim mc As Variant
Dim mt As Variant
でダメですか?
ちなみに、当方はこのサンプルで動作確認済みです。
'[HOWTO] Microsoft Visual Basic 6.0 で正規表現を使用する方法
'http://support.microsoft.com/default.aspx?scid=kb;ja;818802
'レイトバインド化 by もげ
Private Sub Command1_Click()
MsgBox (TestRegExp("is.", "IS1 is2 IS3 is4"))
End Sub
Function TestRegExp(myPattern As String, myString As String)
'オブジェクトを作成します。
Dim objRegExp As Object
Dim objMatch As Object
Dim colMatches As Object
Dim RetStr As String
' 正規表現のオブジェクトを作成します。
Set objRegExp = CreateObject("VBScript.RegExp")
'Pattern プロパティを使用してパターンを設定します。
objRegExp.Pattern = myPattern
' 大文字、小文字を区別するかどうかを指定します。
objRegExp.IgnoreCase = True
' 全文検索か、最初の一致のみの検索かを指定します。
objRegExp.Global = True
' 文字列に指定したパターンが存在するかどうかを確認します。
If (objRegExp.Test(myString) = True) Then
' 一致する文字列を取得します。
Set colMatches = objRegExp.Execute(myString) ' 検索を実行します。
For Each objMatch In colMatches ' colMatches を繰り返し実行します。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
RetStr = RetStr & objMatch.Value & "'." & vbCrLf
Next
Else
RetStr = "String Matching Failed"
End If
TestRegExp = RetStr
End Function
もげさん、ご回答ありがとうございます。
直ぐには試すことできないので後で検証してからご報告させていただきますが、取り急ぎお礼申し上げます。
Dim mc As Object
Dim mt As Object
で解決できました!
ありがとうございました!
ツイート | ![]() |