2017-10-17 3 views
0

J'ai créé un code VBA où je génère des fichiers texte. Je passe 7 arguments dans une sous-méthode pour générer tous les fichiers texte. Cependant, j'ai des difficultés à enregistrer les fichiers générés dans un dossier sélectionné par l'utilisateur. Quand je cours le code, il enregistre simplement tous les fichiers dans le chemin inclus (pour l'instant puisque je ne sais pas comment faire ce que j'explique ci-dessus). Ci-dessous est mon code où j'essaie d'intégrer le chemin que je peux utiliser pour permettre à n'importe quel utilisateur de sélectionner un dossier pour enregistrer tous les fichiers texte générés.Comment enregistrer les fichiers texte de sortie générés dans un dossier sélectionné par l'utilisateur, en VBA?

Sub TextFiles() 

Dim fso As Scripting.FileSystemObject, Path As String 

'Ask user to save files into a folder 
Path = "C:\Users\samplename\Desktop\TEST" 


'Call sub procedure to generate text files and store them in NewFolderPath 
CreateTxtFiles.CreateTxtFiles Path & "\sample1.txt", 1, "sample1", "sample1_", 7, "sample1_2", 9 
CreateTxtFiles.CreateTxtFiles Path & "\sample2.txt", 2, "sample2", "sample2_", 9, "0", 0 
CreateTxtFiles.CreateTxtFiles Path & "\sample3.txt", 3, "sample3", "sample3", 5, "0", 0 
CreateTxtFiles.CreateTxtFiles Path & "\sample4.txt", 4, "sample4", "sample4", 5, "0", 0 

End Sub

+0

"* J'ai des difficultés ... *" Quelles difficultés? Que se passe-t-il lorsque vous l'essayez? Avez-vous une erreur? Est-ce que ça va dans le mauvais dossier? S'il vous plaît soyez précis afin que nous puissions vous aider. – freginold

+0

@freginold, s'il vous plaît voir modifier. Merci – Jesus

Répondre

1

Quelque chose comme cela devrait fonctionner pour vous:

Sub tgr() 

    Dim ShellFolderPicker As Object 
    Dim FolderPath As String 

    Set ShellFolderPicker = CreateObject("Shell.Application") 
    On Error Resume Next 
    FolderPath = ShellFolderPicker.BrowseForFolder(0, "Select Folder to Save Files:", 0).Self.Path 
    On Error GoTo 0 
    If Len(FolderPath) = 0 Then Exit Sub 'Pressed cancel 

    CreateTxtFiles.CreateTxtFiles FolderPath & "\sample1.txt", 1, "sample1", "sample1_", 7, "sample1_2", 9 

End Sub 
+0

Vous rock! C'est exactement ce que je cherchais. Je vous remercie! :) – Jesus

0

Vous cherchez peut-être FileDialog.SelectedItems propriété https://msdn.microsoft.com/en-us/vba/office-shared-vba/articles/filedialog-selecteditems-property-office

Sub TextFiles() 

Dim MyFolder As FileDialog 
Dim Path As Variant 

Set MyFolder = Application.FileDialog(msoFileDialogFolderPicker) 

With MyFolder 
    .AllowMultiSelect = False 
    If .Show = -1 Then 
     Path = .SelectedItems(1) 
    Else 
    End If 
End With 


'Call sub procedure to generate text files and store them in NewFolderPath 
CreateTxtFiles.CreateTxtFiles Path & "\sample1.txt", 1, "sample1", "sample1_", 7, "sample1_2", 9 
CreateTxtFiles.CreateTxtFiles Path & "\sample2.txt", 2, "sample2", "sample2_", 9, "0", 0 
CreateTxtFiles.CreateTxtFiles Path & "\sample3.txt", 3, "sample3", "sample3", 5, "0", 0 
CreateTxtFiles.CreateTxtFiles Path & "\sample4.txt", 4, "sample4", "sample4", 5, "0", 0 

Hope this helps!

+0

Merci, cela a fonctionné aussi :) – Jesus