Vba 如何使用excel文件的文件名更改单元格列?

Vba 如何使用excel文件的文件名更改单元格列?,vba,excel,Vba,Excel,我正在尝试编写excel宏/VBA代码,以根据文件标题调整列的内容。目前,我有一个宏设置,可以根据键入的URL下载csv文件。宏会自动设置文件的格式和名称。我想使用文件名/标题的前5个字符自动格式化其他单元格 例如,文件名为48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。我的文件中有一列名为name+type。我想将“name”行与标题结合起来,并将其填充到字段中。下面的两幅图提供了一个前后对比 目前,我必须在单独的字段中键入前5个字符,然后使用: =“48GHY”和

我正在尝试编写excel宏/VBA代码,以根据文件标题调整列的内容。目前,我有一个宏设置,可以根据键入的URL下载csv文件。宏会自动设置文件的格式和名称。我想使用文件名/标题的前5个字符自动格式化其他单元格

例如,文件名为48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。我的文件中有一列名为name+type。我想将“name”行与标题结合起来,并将其填充到字段中。下面的两幅图提供了一个前后对比

目前,我必须在单独的字段中键入前5个字符,然后使用: =“48GHY”和a2函数

在excel/VBA中是否有这样做的方法


最初的问题已经得到了回答,但现在我在试图将其放在宏中时正在寻求其他帮助。因为这仍然是同一个问题,我不认为它需要另一个职位

这是我正在使用的当前宏/VBA。当我运行这个时,它只显示#VALUE!在牢房里。这两组代码之间唯一不同的是A和B列现在是J和K

' Insert Column after name and then rename it name+type

Rows(1).Find("name").Offset(0, 1).EntireColumn.Insert
Rows(1).Find("name").Offset(0, 1).FormulaR1C1 = "name+type"
“冻结第一排

Rows("1:1").Select
With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
End With
ActiveWindow.FreezePanes = True
'保存文件

ActiveWorkbook.Save
'将内容添加到名称+类型列

Range("K2").Select
ActiveCell.FormulaR1C1 = "=LEFT(MID(CELL(""filename"",RC[-1]),SEARCH(""["",CELL(""filename"",RC[-1]))+1,SEARCH(""]"",CELL(""filename"",RC[-1]))-SEARCH(""["",CELL(""filename"",RC[-1]))-1),5)&RC[-1]"
Range("K2").Select
Selection.Copy
Range("K2:K8294").Select
ActiveSheet.Paste
'自动调整所有列

Columns("A:AK").Select
Selection.Columns.AutoFit
端接头

*还有一条评论。我修改了您在宏中提供的代码,但在运行宏后的每个单元格中,以下代码位于k列:

=LEFT(MID(CELL("filename",J2),SEARCH("[",CELL("filename",J2))+1,SEARCH("]",CELL("filename",J2))-SEARCH("[",CELL("filename",J2))-1),5)&J2
*最后一点。文件名保存为48GHY_fjfdkjfe33.RHRH msadklfjeiojo#csv.txt(这可能与此有关吗?

将其放入B2

=左侧(中间(单元格(“文件名”),A2),搜索(“[”,单元格(“文件名”,A2))+1,搜索(“]),单元格(“文件名”,A2))-SEARCH(“[”,单元格(“文件名”,A2))-1),5)和A2

编辑

解释

这个公式
=单元格(“filename”,A2)
给出了文件名

C:\Users\Siddharth Rout\Desktop\[Book1.xlsx]Sheet1

这个公式呢

=MID(单元格(“文件名”,A2),搜索(“[”,单元格(“文件名”,A2))+1,搜索(“]),单元格(“文件名”,A2))-SEARCH(“[”,单元格(“文件名”,A2))-1)

只从上面取出文件名,为您提供
Book1.xlsx

Left()
根据指定的字符数返回文本字符串中的第一个或多个字符

HTH

将其放入B2

=左侧(中间(单元格(“文件名”),A2),搜索(“[”,单元格(“文件名”,A2))+1,搜索(“]),单元格(“文件名”,A2))-SEARCH(“[”,单元格(“文件名”,A2))-1),5)和A2

编辑

解释

这个公式
=单元格(“filename”,A2)
给出了文件名

C:\Users\Siddharth Rout\Desktop\[Book1.xlsx]Sheet1

这个公式呢

=MID(单元格(“文件名”,A2),搜索(“[”,单元格(“文件名”,A2))+1,搜索(“]),单元格(“文件名”,A2))-SEARCH(“[”,单元格(“文件名”,A2))-1)

只从上面取出文件名,为您提供
Book1.xlsx

Left()
根据指定的字符数返回文本字符串中的第一个或多个字符


HTH

也许你甚至不需要VBA。像这样的东西对我很有用

=MID(CELL("filename",A2),FIND("[",CELL("filename",A2))+1,5) & A2

查找单元格公式以了解文件名是如何工作的。

也许您甚至不需要VBA。类似的内容对我很有用

=MID(CELL("filename",A2),FIND("[",CELL("filename",A2))+1,5) & A2

查找单元格公式以了解文件名的工作原理。

+1我们开始了,同时发布了几乎相同的内容。如果文件名不是本地保存的,或者是只读的,这有关系吗?@Jonny:你不必键入文件名:)只需复制并粘贴公式即可:)奇怪。当文件不存在时,我遇到了#值错误本地保存。保存后,代码运行良好。很好-您可能希望按照Scott的建议在单元格函数的第二个参数中添加一个引用,以便在另一个工作簿处于活动状态时重新计算时工作簿名称保持不变。+1我们开始了,在同一时间发布几乎相同的内容。如果不保存文件名,有关系吗lly,还是只读?@Jonny:您不必键入文件名:)只需复制并粘贴公式即可:)奇怪。当文件未在本地保存时,我遇到了#值错误。保存后,代码运行良好。很好-您可能希望按照Scott的建议,在CELL函数的第二个参数中添加引用,以便工作簿不可用当您在另一个工作簿处于活动状态的情况下重新计算时,me保持不变。+1是的。再次计时:)是的,但是在这一次上做了额外的努力。当我将文件保存在本地时,代码工作得很好,但当只读文件+1是时返回了一个#值错误。再次计时:)是的,但是在这一次上做了额外的努力。代码工作得很好有一次,我在本地保存了该文件,但在创建只读文件时返回了一个#值错误