我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?

Posted

技术标签:

【中文标题】我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?【英文标题】:I have a list of excel filenames in the column A of my worksheet and I would like to remove the .xls and .xlsm tags from the filenames using VBA. How? 【发布时间】:2018-05-21 23:03:58 【问题描述】:

I want to remove the .xls and .xlsm tags using the "." in the VBA logic, but I am a beginner in VBA and I am wondering how I can accomplish the objective ?

【问题讨论】:

谷歌vba split command 感谢您的回复,在这种情况下,我只对拆分和删除最后一个“。”之后的文本感兴趣。字符 然后阅读split 命令的文档,解决问题所需的所有信息都在那里。如果在彻底研究您的问题后,您仍然遇到特定问题,请通过minimal reproducible example 与我们分享您的代码以及您不理解的部分和您所做的研究,这样我们就可以知道您真正需要什么. 您甚至不需要 split 命令。只需替换文本。至少可以说,VBA 对于这项任务来说太过分了。如果您不知道如何自己解决 VBA 中的问题,最好先熟悉 Excel,然后再使用 VBA,这对于初学者来说可能非常不守规矩。 另外,要指出正确的方向,Excel 公式 =SUBSTITUTE(text, old_text, new_text) 就足够了。如果您想精确定位文件路径分隔符,请结合使用SEARCHLEFT。以下是关于前一种方法的一些文档:exceljet.net/excel-functions/excel-substitute-function. 【参考方案1】:

应该这样做...只需传入您要从中提取的范围

Sub RemoveExtension(rng As Range)
   ' Declare your variables
   Dim LR As Long
   Dim i As Long
   Dim str() As String

   With rng
      ' Find the last row
      LR = .Cells(.Rows.Count, 1).End(xlUp).Row
      ' Enter loop
      For i = LR To 1 Step -1
         If Not (IsEmpty(.Cells(i))) Then
            ' Extract and split text using "." as a delimiter
            str() = Split(.Cells(i).Value, ".")
            ' Rewrite text in cell from first array variable in str()
            .Cells(i).Value = str(0)
         End If
      Next i
   End With
End Sub

你可以用另一个Sub函数调用这个函数...下面的例子:

Sub Macro1()

    ' Change Range() to what every range you need
    Call RemoveExtension(Range("A2:A10"))

End Sub

请记住,这仅适用于列,因此您不能传入Range("A1:C3")

【讨论】:

Sub RemoveExtension(rng As A2) ' 声明你的变量 Dim LR As Long Dim i As Long Dim str() As String With rng ' 找到最后一行 LR = .Cells(.Rows.Count, 1).End(xlUp).Row ' Enter loop For i = LR To 1 Step -1 If Not (IsEmpty(.Cells(i))) Then ' 使用“.”提取和分割文本作为分隔符 str() = Split(.Cells(i).Value, ".") ' 从 str() 中的第一个数组变量重写单元格中的文本 .Cells(i).Value = str(0) End If Next i以结束子结束 由于我正在处理的数据位于 A 列中,因此如您在代码中看到的那样,我将范围值设为 A2。但不幸的是,代码不起作用。如果您有任何 cmets,请告诉我。 所有你需要做的就是调用这个函数......你不应该修改任何东西。 看不懂的看VBA Function Calling

以上是关于我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?的主要内容,如果未能解决你的问题,请参考以下文章

excel中有两个表,找出A表中不重复8表的身份证号,我的A表和B表的数据大多还不相同

怎么把excel文件中的A和B表拆分成两个独立的excel文件?

如何将行从一个 Excel 工作表复制到另一个工作表并使用 VBA 创建重复项?

Python Pandas - 如何在 Excel 工作表的特定列中写入

使用python查找Excel的列中是否存在值

重命名 Pyspark Dataframe 中的未命名列