匿名質問者

VBScriptでAccess VBAのクラスモジュールを書き換える方法


標準モジュールを書き換える方法は
こちらのサイトを参考に作成することができました。

しかし、フォームのクラスモジュールを
書き換えることがどうやってもできず、
わかる方がおられたらお教えください。

コード部分を削除して、テキストを貼り付けて、
コンパイルができればありがたいです。

サイト等ヒントでもありましたら
よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2018/07/25 00:05:04

回答2件)

匿名回答1号 No.1

Access VBA と VBScript は似ていますが別の言語です。
複雑なものや VBA 固有の機能(型、イベント、GUI部品、印刷処理、DLL呼び出し等)を使っているようなものは移植は厳しいでしょう。
以下のような簡単なサンプルコードレベルであれば、移植は可能だと思います。

以下は Access VBA のクラスモジュールのサンプルです。

' File : TestClass.cls
Private value As Long

Private Sub Class_Initialize()
    value = 1
End Sub

Public Function GetValue() As Long
    GetValue = value
End Function

' File : TestModule.bas
Sub TestMain()
    Dim test As New TestClass
    Debug.Print test.GetValue()
End Sub

以下は、上記を VBScript に移植してみた場合のサンプルです。

' TestModule.vbs
Class TestClass
    ' Private value As Long
    Private value 

    Private Sub Class_Initialize()
        value = 1
    End Sub

    ' Public Function GetValue() As Long
    Public Function GetValue()
        GetValue = value
    End Function
End Class

Call Main()

Sub Main()
    ' Dim test As New TestClass
    Dim test
    Set test = New TestClass
    WScript.Echo test.GetValue()
End Sub
他1件のコメントを見る
匿名質問者

分かり難くい表現ですいません。

VBScript「に」書き換えたいわけではなく、
VBScript「で」書き換えたいのです。

2018/07/19 22:38:43
匿名回答1号

VBScript のコードが既にあり VBA に移植したい、という話でしょうか?

VBScript → VBA への移植であれば、難易度は低いかと思いますが、互換性の無い機能については、別途、書き換える必要があります。以下のような機能については互換性がありません。

■ VBScript の機能で VBA に含まれていない機能
https://msdn.microsoft.com/ja-jp/library/cc392354.aspx

以下の機能は VBA では使用できません。

・RegExp
・Class
・Eval
・Execute

■ Windows Script Host のオブジェクト モデル
https://msdn.microsoft.com/ja-jp/library/cc392522.aspx

WSH 関連のオブジェクトも VBA では使用できません。
例えば、WScript.Echo() は Debug.Print() などに置き換えるような対応が必要です。

2018/07/19 23:11:38
匿名回答2号 No.2


http://q.hatena.ne.jp/1221791084

https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/form-module-property-access

匿名質問者

ありがとうございます。

やってみます。

2018/07/19 22:38:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません