2017-04-01 1 views
0

Création de la chaîne à utiliser avec la commande Shell dans Access VB. La chaîne fonctionne si elle est écrite en entier mais si j'essaie d'utiliser des variables dans la chaîne, la commande ne fonctionne pas même si l'utilisation de variables produit exactement la chaîne complète (dans la fenêtre immédiate), cela fonctionne.Accès VB - Problèmes de chaîne de shell

Je soupçonne que quelque chose se passe dans l'interprétation de la version chaîne du code, mais ne peut pas déterminer quoi.

Voici le code, j'ai utilisé CHR (34) pour produire les guillemets que je veux montrer dans la chaîne. Les suggestions seraient tellement appréciées - je n'ai plus beaucoup de cheveux!

température Private Sub()

Dim strFilePath As String
Dim strFileName As String
Dim strZipFilename As String
Dim strPDFfilename As String
Dim strShellString As String
shell Dim As Object
Dim résultat As Long

Set shell = CreateObject("WScript.shell") 

strFilePath = "E:\Documents\Excel Spreadsheets\Roz Theremas\Access\PDFs" 
strFileName = "17-03-31temp" 
strZipFilename = strFilePath & "\" & strFileName & ".zip" 
strZipFilename = Chr(34) & strZipFilename & Chr(34) 
strPDFfilename = strFilePath & "\" & strFileName & ".pdf" 
strPDFfilename = Chr(34) & strPDFfilename & Chr(34) 
strShellString = Chr(34) & Chr(34) & Chr(34) & "C:\Program Files\7-Zip\7z.exe" & Chr(34) & Chr(34) & " a -tzip " & Chr(34) & strZipFilename & Chr(34) & " " & Chr(34) & strPDFfilename & Chr(34) & Chr(34) 

'commande shell non travail

résultat = shell.Run (strShellString, 0, Faux)

' travail commande shell

result = shell.Run("""C:\Program Files\7-Zip\7z.exe"" a -tzip ""E:\Documents\Excel Spreadsheets\Roz Theremas\Access\PDFs\17-03-31temp.zip"" ""E:\Documents\Excel Spreadsheets\Roz Theremas\Access\PDFs\17-03-31temp.pdf""", 0, False) 

'Sortie de fenêtre immédiate de strShellString

' "" "C: \ Program Files \ 7-Zip \ 7z.exe" "un -tzip" "E: \ Documents \ Feuilles de calcul Excel \ Thermas \ Roz \ Access \ PDFs \ 17-03-31temp.zip" "" "E: \ Documents \ Feuilles de calcul Excel \ Thermostats Roz \ Access \ PDFs \ 17-03-31temp.pdf "" "

End Sub

Répondre

0

Mes cheveux sont sauvés - j'ai trouvé la réponse! Donc, pour la postérité, c'est ici.

J'ai modifié strFilePath pour mettre des guillemets autour des noms de dossiers de deux mots et des citations supprimées autour des lignes strZipFilename et strPDFFilename. Je suppose que Shell souffrait d'une surabondance de citations. En le modifiant, j'ai ajouté un mot de passe au fichier zip et j'ai changé le false en true à la fin de la commande string pour qu'il renvoie un code d'erreur.

Merci à tous ceux qui ont passé du temps à essayer de comprendre ce que j'avais fait.

temp Public Sub()

Dim strFilePath As String
Dim strFileName As String
Dim strZipFilename As String
Dim strPDFfilename As String
Dim strPassword As String
shell Dim As Object
Dim résultat As Long

Set shell = CreateObject("WScript.shell") 

strPassword = "frog" 
strFilePath = "E:\Documents\""Excel Spreadsheets""\""Roz Theremas""\Access\PDFs" 
strFileName = "17-03-31temp" 
strZipFilename = strFilePath & "\" & strFileName & ".zip" 
strPDFfilename = strFilePath & "\" & strFileName & ".pdf" 

result = shell.Run("""C:\Program Files\7-Zip\7z.exe"" a -tzip " & "-p" & strPassword & " " & strZipFilename & " " & strPDFfilename, 0, True)