excel 从目录中提取文件名

xfb7svmp  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(195)

我是VBA新手,我写了一段代码,从文本文件导入数据,其中一部分提示用户选择要打开的文件,我的问题是如何提取文件名并将其保存在单元格中,或者甚至将其赋给变量,比如X。

Sub Macro1()
'
' Macro1 Macro
'
    ChDir "C:\Users\majed502\Documents\VBA WORK\VBA"
    
   the_file_picked = Application.GetOpenFilename("Text Files (*.txt), *.txt")
        
    Workbooks.OpenText Filename:= _
        the_file_picked, Origin:=437, _
        StartRow:=4, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(11 _
        , 1), Array(23, 1), Array(28, 1), Array(43, 1), Array(53, 1)), TrailingMinusNumbers:= _
        True
    'Sheets("Nov2007").Select
    ActiveSheet.Move Before:=Workbooks("monthly update.xlsm").Sheets(1)
    
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp
    
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Range("A1").Select
    ActiveCell.FormulaR1C1 = Left(ActiveSheet.Name, 7)

End Sub

我当前正在从工作表名称中提取名称,但希望从文件名中提取名称

8gsdolmq

8gsdolmq1#

为了从整个路径中检索文件名,您可能需要执行以下宏:

Sub test()
Dim a As String
a = "C:\Temp_Folder\blabla.txt"

iSplit = InStrRev(a, "\")

strName = Right(a, Len(a) - iSplit)
End Sub

=〉strName等于“blabla.txt”,这是文件名。
作为一个直线,你可以这样做:

strName = Right(str_Path, Len(str_Path) - InStrRev(str_Path, "\"))

...其中strPath是文件的完整路径。

scyqe7ek

scyqe7ek2#

试试下面的潜艇。

Sub LoopThroughFiles()
    Dim StrFile, FolderPath As String
    Dim StartCell As Range
    Dim i As Long
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        FolderPath = .SelectedItems(1)
    End With

    StrFile = Dir(FolderPath & "\")  'Dir("c:\testfolder\*test*") --- Dir("C:\Users\HARUN\Music\*.xlsx")
    
    Set StartCell = Application.InputBox(Prompt:="Select a cell to put file names. ", Type:=8)
    
    i = StartCell.Row
    Do While Len(StrFile) > 0
        'Debug.Print StrFile
        Cells(i, StartCell.Column) = StrFile
        StrFile = Dir
        i = i + 1
    Loop
End Sub
  • 这将提示用户选择一个文件夹。
  • 然后会提示选择一个单元格来放置文件名。
  • 根据需要修改代码。

相关问题