Excel 是否有VBA函数将文件名拉入代码?
我把一个宏放在一起运行股票供给报告分析;但是,我已经将其特定于单个文件。我使用文件名并提取一部分来创建列标题。目前,代码使用特定的文件路径/文件名来完成此任务,但我想将其作为一个通用函数,可以对多个文件进行操作,每个文件使用相同的结构 我甚至不知道从哪里开始引用文件名以继续Excel 是否有VBA函数将文件名拉入代码?,excel,vba,Excel,Vba,我把一个宏放在一起运行股票供给报告分析;但是,我已经将其特定于单个文件。我使用文件名并提取一部分来创建列标题。目前,代码使用特定的文件路径/文件名来完成此任务,但我想将其作为一个通用函数,可以对多个文件进行操作,每个文件使用相同的结构 我甚至不知道从哪里开始引用文件名以继续 Dim MyPath As String, mps As Variant, mps_temp As String, mydate As Date, IntroDate As Date, i As Integer MyPat
Dim MyPath As String, mps As Variant, mps_temp As String, mydate As Date, IntroDate As Date, i As Integer
MyPath = "C:\Users\Kirank\Documents\Stock Feed Analysis\HVL_Available_to_Sell_Report_with_Headers 2019.01.01"
mps = Split(MyPath, " ")
For i = LBound(mps) To UBound(mps)
mps_temp = mps(UBound(mps) - i)
If mps_temp Like "####.##.##" Then
mydate = DateSerial(Mid(mps_temp, 1, 4), Mid(mps_temp, 6, 2), Mid(mps_temp, 9, 2))
IntroDate = mydate - 181
Exit For
End If
我希望有代码将文件路径拉入MyPath字段,这样我就可以使用Split函数将日期从文件名中拉出来。对不起,忽略此答案,因为我理解错了问题 您可以使用以下命令获取文件路径:
MyPath=thisworkbook.path
这对你有用吗?希望下面的代码会有用
我使用了Do loop和Dir函数,以便循环浏览硬编码文件夹StockAnalysis中存在的所有excel文件,而不使用硬编码文件名
Dim Mypath As String, fileName As String, mps As Variant, mps_temp As String, mydate As Date, IntroDate As Date, i as integer
Application.ScreenUpdating = False
Mypath = "C:\Users\Kirank\Documents\Stock Feed Analysis\"
fileName = Dir(Mypath & "*.xl?") 'Dir functions support use of wildcards character * and ? used to look for all types of excel files in the folder.
Do While fileName <> ""
Count = Count + 1
mps = Split(fileName, " ")
For i = LBound(mps) To UBound(mps)
mps_temp = mps(UBound(mps) - i)
If mps_temp Like "####.##.##.xlsx" Then
mydate = DateSerial(Mid(mps_temp, 1, 4), Mid(mps_temp, 6, 2),Mid(mps_temp, 9,2))
IntroDate = mydate - 181
Cells(Count, 1).Value = IntroDate 'Saving Introdate in excel, feel free to change the destination.
Exit For
End If
Next i
fileName = Dir()
Loop
这是您打开的文件,还是包含宏代码的文件?@BigBen-这是我打开的文件,宏将单独存储。thisworkbook.path将获取包含宏的文件的路径,而不是用户打开的文件的路径。ActiveWorkbook.path是一个更好的选项,Application.FileDialogmsoFileDialogFilePicker用于单个文件或应用程序。FileDialogmsoFileDialogFolderPicker用于多个文件可能是最好的,具体取决于Op的确切设置。当我使用建议的选项时,查询输出显示为12:00:00 AM。当转换为日期时,会出现1/0/1900。日期应为2019年1月1日,文件名使用以下结构:yyyy.mm.dd.@KiranKelkar,因为For循环和分割部分都是不必要的。使用strev获取的最后一个索引。将文件扩展名修剪掉,然后抓取最右边的10个字符,并将这10个字符的字符串转换成一个合适的日期。1/0/1900 12:00:00 AM对应于VBA中的日期值0。啊,好的,很抱歉我误解了这个问题,与日期有关,假设mypath=my route/myfolder/01.01.2019,您可以使用以下方法获取日期:mydate=midmypath,lenmypath-9,2&/&mypath,lenmypath-6,2&/&mypath,lenmypath-3,4@Alvaro抄送-它可能是值得的,在它被否决之前