2017-02-24 2 views
0

J'essaie d'utiliser Access 2016 comme frontal pour une base de données qui, lorsqu'un utilisateur clique sur un bouton, génère un script Powershell et l'exécute.VBA Access Écrire dans le fichier PS1

J'utilise actuellement ceci:

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 

Ensuite, pour exécuter le script que je utilise:

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

Je me rends compte que ce qui est probablement un moyen vraiment mauvais de le faire! Donc toute aide est grandement appréciée!

Merci!

EDIT: Désolé n'est pas une question!

Le problème est qu'il met en évidence une erreur dans « Script f.write »

Compile d'erreur: Méthode ou membre de données introuvable.

+1

_Je me rends compte que c'est probablement un très mauvais moyen de le faire! _ - Qu'est-ce qui te fait penser ainsi? Cela provoque-t-il une erreur? Cela provoque-t-il un autre comportement indésirable? StackOverflow n'est pas vraiment adapté à ces types de questions ouvertes; Les questions sur le sujet sont celles qui ont un problème spécifique. –

+0

Aide avec quoi? Il n'y a pas de question dans ce post. –

Répondre

0

Le format %VAR% ne fonctionne pas dans VBA, vous devez Environ("VAR")

Cela dit nom d'utilisateur ne retourne pas de valeur avec cette méthode, mais vous pouvez utiliser VBA.Environ("Username") dans ce cas:

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 sont actuellement définis comme Variant. Peut-être les définir comme des chaînes. En outre, où sont définis f et filesysObject? –

+0

Je supposais que l'OP avait seulement inclus les parties pertinentes de son script, ce qui peut ne pas être le cas, j'ai donc étoffé ma réponse en code complet. –