1 votes

Inclure un espace dans le nom du fichier

Je dois enregistrer un fichier dont le nom contient des espaces aléatoires.

C'est en Excel Vba. Après une heure de recherche sur Internet, je n'ai trouvé que des suggestions pour remplacer l'espace par %20 ou éviter les espaces dans le nom du fichier. J'ai essayé d'ajouter des guillemets ou de mettre %20 sans succès.

Le fichier produit est destiné à être exporté vers un système patrimonial, changer les noms ou remplacer l'espace par un autre caractère n'est pas une option. .

De plus, les espaces ne sont pas nécessairement au même endroit et j'aimerais éviter de mettre une déclaration Case pour 20 noms différents.

Voici le morceau de code qui me pose problème.

Savepath=range("a1").value
NameOfFile=range("a2").value 
FullnameSave=savepath & "\"& NameOfFile & ".xlsm" 

ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Tout fonctionne bien, sauf lorsqu'il y a un espace quelque part dans FileName.

Par exemple, si la valeur en A2 est Prix standard le fichier est bien sauvegardé, s'il est prix standard Je reçois une erreur (erreur 1004 sur la méthode SaveAs). Par ailleurs, si je code le nom en dur comme suit, cela fonctionne.

FullnameSave=savepath & "\" & "standard price" & ".xlsm" 

J'ai essayé d'ajouter 2, 3, 4 et même 5 guillemets autour du nom du fichier mais il ne retourne jamais le format correct (qui serait quelque chose comme H:\Pip_Import\ImportTests2016 -10\"prix standard"

1voto

Gary's Student Points 18946

Si vous enregistrez dans un dossier local, il ne devrait pas y avoir de problème. J'ai pris votre code :

Sub SaveMePlease()
    savepath = Range("a1").Value
    Filename = Range("a2").Value
    FullNameSave = savepath & "\" & Filename & ".xlsm"
    ActiveWorkbook.SaveAs Filename:=FullNameSave, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

avec ça dans la feuille de travail :

enter image description here

Notez l'espace dans le nom du fichier. Votre code s'est exécuté sans erreur et a produit :

enter image description here

Je n'ai pas essayé d'enregistrer sur un emplacement réseau.

0voto

P. O. Points 300

En fin de compte, cela n'avait rien à voir avec les espaces dans le nom du fichier. Le fait de réécrire le code pour l'adapter au format de SU et de voir qu'il fonctionnait sur l'ordinateur de quelqu'un d'autre m'a fait revenir au code original avec un regard différent.

Il y avait un espace après la barre oblique inversée. " \ " sur

FullnameSave=savepath & "\ " & NameOfFile & ".xlsm" 

Ce qui m'a dérouté, c'est que cette faute de frappe est ignorée/corrigée automatiquement si le nom du fichier ne contient pas de blanc, mais génère une erreur s'il y en a un.

La solution consistait donc simplement à réécrire la partie problématique du code à partir de zéro et à rechercher les erreurs de frappe.

Je ne suis pas sûr que ce genre de solution convienne au SU mais ça a marché pour ce problème spécifique...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X