2017-08-25 10 views
1

データベースからコードの文字列を読み込みたい。文字列には、プロジェクトの後半で設定されるテキストと1/2変数が含まれている必要があります。結果は次のようになります。VBAコードとしてコードを実行

"Greetings, Tom." 

は通常、私はこのような何かをするだろう:

Sub Show() 
    Dim strName as String 
    strName = "Tom" 
    Debug.Print "Greetings, " & strName & "." 
    ... 

しかし、この場合は

一部

"挨拶、" & STRNAME &」。 "

は、私のデータベースにあります。実行時に、strNameの値を複数の名前に設定します(たとえば、あるケースでは "Tom"に、別のケースでは "Marco")。

strNameが変数であり文字列ではないことをVBAに知らせる方法表示されますか?最後に私の呼び出しは次のようになります:

strDbText = <String from Database> 
strName = "Tom" 
Debug.Print strDbText '--> Greetings, Tom. 

もう一度私を助けてくれる人はいますか? ありがとう!

編集: このコードは実行ファイルにはなりません。したがって、新しいモジュールを作成し、挿入されたコードを実行するためにVBIDE-Objectsを使う必要はありません。これは、Word文書に書き込まれる文字列です。

ソリューション:私はstrNameが最初に割り当てて、このようなデータベース内の文字列で置き換えます交換してください()関数

+1

短い回答:できません。しかし、なぜ文字列の置換を使い、 '' strName ''を' 'Tom" 'で置き換えてみませんか? –

+0

ここをクリックしてください:https://stackoverflow.com/questions/16510800/vba-access-get-string-from-db – Lucas

+2

なぜコードとして任意のテキストを実行したいのですか?悪意のあるユーザー(または無知なユーザー)がそのようなときに被る可能性のある損害の概念はありますか?あなたが何を記述しているのか、何も実行する必要は全くありません。文字列を 'Greetings、%Name%'としてDBに格納します。実行時に、データベースから値*を読み込み、 '%Name%'を通常の文字列演算を使用して個人の名前を含む文字列に置き換え、文字列をラベルのキャプションまたはそれを表示する場所にスローします。 *実行*は関係ありません。 –

答えて

0

と 文字列置換...

strName = "Tom" 
strDbText = <String from Database> 
strDbText = Replace(strDbText, "strName", strName) 'This distinguishes the string from the variable 
Debug.Print strDbText '--> Greetings, Tom. 

しかし、Iあなたのデータベース内の別の変数をstrNameの代わりに使用することをお勧めします。なぜなら、見るのが混乱するからです。

0

@ShanayLの回答に同意し、その使用を強く推奨すると、私はEvalを使用して、あなたの質問を解決するための安全でない方法を指摘することができませんでした。 Evalは潜在的に危険で、アプリケーションにコードインジェクションの脆弱性が発生します。

strDbText = """Greetings, "" & strName" 
strName = "Tom" 
Debug.Print Eval(strDbText) 'Greetings, Tom 

注意:Evalは危険な可能性があり、その使用は強く推奨されません。

関連する問題