J'ai besoin du chemin d'accès et du nom du fichier qui est ouvert avec File Dialog (macro VBA dans Excel). Je veux montrer cette information avec un lien hypertexte dans ma feuille de calcul. Quelqu'un peut-il m'aider?
Merci d'avance
modifier:
Voici ce que je viens de trouver:
Sub GetFilePath()
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
ActiveSheet.Range("A1") = FileSelected
End Sub
Avec ce code, j'ai le chemin du fichier. Maintenant, je cherche toujours un moyen d'obtenir le nom du fichier.
Tx
Essaye ça
Sub Demo()
Dim lngCount As Long
Dim cl As Range
Set cl = ActiveCell
' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
' Display paths of each file selected
For lngCount = 1 To .SelectedItems.Count
' Add Hyperlinks
cl.Worksheet.Hyperlinks.Add _
Anchor:=cl, Address:=.SelectedItems(lngCount), _
TextToDisplay:=.SelectedItems(lngCount)
' Add file name
'cl.Offset(0, 1) = _
' Mid(.SelectedItems(lngCount), InStrRev(.SelectedItems(lngCount), "\") + 1)
' Add file as formula
cl.Offset(0, 1).FormulaR1C1 = _
"=TRIM(RIGHT(SUBSTITUTE(RC[-1],""\"",REPT("" "",99)),99))"
Set cl = cl.Offset(1, 0)
Next lngCount
End With
End Sub
Vous pouvez obtenir n'importe quelle partie du chemin du fichier à l'aide de FileSystemObject. GetFileName (chemin du fichier) vous donne ce que vous voulez.
Code modifié ci-dessous:
Sub GetFilePath()
Dim objFSO as New FileSystemObject
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
ActiveSheet.Range("A1") = FileSelected 'The file path
ActiveSheet.Range("A2") = objFSO.GetFileName(FileSelected) 'The file name
End Sub
Pour extraire uniquement le nom de fichier du chemin, vous pouvez procéder comme suit:
varFileName = Mid(fDialog.SelectedItems(1), InStrRev(fDialog.SelectedItems(1), "\") + 1, Len(fDialog.SelectedItems(1)))
Je pense que tu veux ça:
Dim filename As String
filename = Application.GetOpenFilename
Dim cell As Range
cell = Application.Range("A1")
cell.Value = filename
Je pense que c'est le moyen le plus simple d'obtenir ce que vous voulez.
Nous remercions JMK pour la réponse à la première partie et la partie hyperlien a été adaptée de http://msdn.Microsoft.com/en-us/library/office/ff822490(v=office.15).aspx
'Gets the entire path to the file including the filename using the open file dialog
Dim filename As String
filename = Application.GetOpenFilename
'Adds a hyperlink to cell b5 in the currently active sheet
With ActiveSheet
.Hyperlinks.Add Anchor:=.Range("b5"), _
Address:=filename, _
ScreenTip:="The screenTIP", _
TextToDisplay:=filename
End With
Après avoir recherché différents sites Web, vous avez cherché une solution permettant de séparer le chemin d'accès complet du nom de fichier une fois que les informations complètes ont été obtenues à partir de la boîte de dialogue Ouvrir un fichier, et de voir à quel point les solutions données étaient complexes pour un nouvel arrivant Excel. comme moi, je me suis demandé s'il ne pourrait pas y avoir une solution plus simple. J'ai donc commencé à travailler seul et je suis arrivé à cette possibilité… .. (Je ne sais pas si quelqu'un a eu la même idée auparavant. Étant si simple, si quelqu'un l'a fait, je m'excuse.)
Dim fPath As String Dim fName As String Dim fdString As String fdString = (the OpenFileDialog.FileName) 'Get just the path by finding the last "\" in the string from the end of it fPath = Left(fdString, InStrRev(fdString, "\")) 'Get just the file name by finding the last "\" in the string from the end of it fName = Mid(fdString, InStrRev(fdString, "\") + 1) 'Just to check the result Msgbox "File path: " & vbLF & fPath & vbLF & vblF & "File name: " & vbLF & fName
ET C'EST TOUT!!! Essayez, et laissez-moi savoir comment ça se passe ...
À partir d'Office 2010, nous ne pourrons plus utiliser le contrôle de boîte de dialogue commun. Il est donc agréable d'utiliser l'objet Application pour obtenir les résultats souhaités.
Ici, j'ai une zone de texte et un bouton de commande - collez le code suivant sous l'événement de bouton de commande, ce qui ouvrira la boîte de dialogue du fichier et ajoutera le nom du fichier à la zone de texte.
Dim sFileName As String
sFileName = Application.GetOpenFilename("MS Excel (*.xlsx), *.xls")
TextBox1.Text = sFileName
Sub GetFilePath()
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = Replace(.SelectedItems(1), .InitialFileName, "")
End With
ActiveSheet.Range("A1") = FileSelected
End Sub
Le code démarre la recherche de fichier à partir de la racine du côlon, si je veux lancer la recherche dans un répertoire spécifique, afin d'éviter de consulter ce répertoire à chaque fois, où je devrais en placer un. Je l'ai fait comme
Sub GetFilePath()
FileSelected = "G:\Audits\A2010"
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
ActiveSheet.Range("C14") = FileSelected
End Sub
Mais il n’a pas pu démarrer à partir de "G:\Audits\A2010"
La commande ci-dessous est suffisante pour obtenir le chemin du fichier à partir d'une boîte de dialogue -
my_FileName = Application.GetOpenFilename("Excel Files (*.tsv), *.txt")
Je pense que cela va faire:
Dim filename As String
filename = Application.GetOpenFilename