2017-02-24 21 views
0

ユーザーがボタンをクリックしたときにPowershellスクリプトを生成して実行するデータベースのフロントエンドとして、Access 2016を使用しようとしています。VBAアクセスPS1ファイルへの書き込み

は、私は現在、これを使用しています:

Dim Script As String 
Script = ("test" & vbCrLf & "2nd line?") 
Set f = fileSysObject.OpenTextFile("C:\Users\%Username%\Documents\Access.ps1", True, True) 
f.Write Script 
f.Close 

その後、私は使用していたスクリプトを実行する:

Dim run 
run = Shell("powershell ""C:\Users\%Username%\Documents\Powershell\Access.ps1""", 1) 

私はこれはおそらくこれを行うのは本当に悪い方法であることを実感します!だから、どんな助けも大歓迎です!

ありがとうございます!

EDIT: ご質問はありません。

問題は、それが「f.writeスクリプト」

コンパイルエラーでエラーを強調していることである:メソッドまたはデータメンバが見つかりません。

+1

_これはおそらくこれを行う本当に悪い方法であることを認識しています!_ - あなたはどう思いますか?それはエラーを引き起こしますか?他の望ましくない動作を引き起こしますか? StackOverflowは、これらの種類の自由な質問には本当に適していません。トピック上の質問は、特定の問題を持つ質問です。 –

+0

何をお手伝いしますか?この投稿には何の疑問もありません。 –

答えて

0

%VAR%はVBAで動作しない形式で、ユーザー名は、そのメソッドで値を返さないと述べEnviron("VAR")

する必要がありますが、この場合にはVBA.Environ("Username")を使用することができます。

Dim strScript, strUserName, strFile As String 
Dim objFSO, objFile as Object 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

strScript = ("test" & vbCrLf & "2nd line?") 
strUserName = VBA.Environ("Username") 
strFile = "C:\Users\" & strUserName & "\Documents\Access.ps1" 

Set objFile = objFSO.CreateTextFile(strFile) 
objFile.WriteLine strScript 
objFile.Close 

Set objFSO = Nothing 
Set objFile = Nothing 
+0

Script、UsrNameは現在Variantとして定義されています。たぶんそれらを文字列として定義します。また、fとfilesysObjectはどこに定義されていますか? –

+0

OPにはスクリプトの関連部分のみが含まれていると思われましたが、そうではない可能性がありますので、私は完全なコードに回答してくれました。 –

関連する問題