gpt4 book ai didi

excel - 更改工作簿名称的一部分并将文件另存为新名称

转载 作者:行者123 更新时间:2023-12-04 20:04:10 25 4
gpt4 key购买 nike

在将工作簿另存为新文件之前,我正在尝试更改文件名(YY 编号)。每个文件名的格式为:“HXXX-XXX-XXX-YY 示例标题”

YY 是从 0 到无穷大的任意数字,其中 YY 总是从字符串中的 14 个字符开始。

有没有办法获取原始文件名(在代码中尝试),将 YY 编号更改为下一个连续编号,然后使用"new"文件名另存为?

例子:
之前的标题:H019-018-072-2 设备语言 AS
预期结果:H019-018-072-3 设备语言 AS

我的代码部分在那里,但我需要拆分字符串吗?

Sub SaveAsNewFile1()
Dim filepath As String
Dim filename As String
Dim filepatharch As String
Dim filelist As String
Dim filedate As String
Dim filecount As Integer

'Set where to save and the file naming convention
filepath = "H:\BoM Drafts Macro\"
filename = ActiveWorkbook.Name

If InStr(filename, ".") > 0 Then
Str1 = Left(filename, InStr(filename, ".") - 1)
End If

With CreateObject("Scripting.FileSystemObject")
Debug.Print Mid$(.GetBaseName(Str1), 13)
End With

'"HXXX-XXX-XXX-.." & rest of name
filepatharch = "H:\BoM Drafts Macro\"

'Do While Len(Dir(filepatharch & filename)) <> 0
'filecount = filecount + 1
'hfilename = "STR1" & filename
'Loop

Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs filename:= _
"H:\BoM Drafts Macro\" & hfilename & ".xlsx"

ActiveWindow.Close

End Sub

最佳答案

您将需要进一步拆分文件名。

你在“。”处 split 的本能。摆脱文件扩展名很好。接下来的步骤如下:

1)提取标题,在本例中为“Device Language AS”,可以按如下方式完成

Title = Right(Str1, Len(Str1) - InStr(Str1, " "))

2)提取最后一个文件的编号,“2”可以如下完成
LastNum = Right(Left(Str1, Len(Str1) - Len(Title) - 1), Len(Str1) - Len(Title) - 14)

3)提取字符串的缩短版本,可以按如下方式完成
ShortName = Left(Str1, 13)

在这些步骤之后,您的 if 语句用于在“。”处进行拆分。应该是这样的:
If InStr(filename, ".") > 0 Then
Str1 = Left(filename, InStr(filename, ".") - 1)
Title = Right(Str1, Len(Str1) - InStr(Str1, " "))
LastNum = Right(Left(Str1, Len(Str1) - Len(Title) - 1), Len(Str1) - Len(Title) - 14)
ShortName = Left(Str1, 13)
End If

从这一点开始,您只需要将以前的“-YY”编号增加到新编号,然后您可以使用现有代码将所有部分连接在一起,以使用新名称保存文件,如下所示。
LastNum = CStr(CInt(LastNum) + 1)
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs filename:= _
filepath & ShortName & LastNum & " " & Title & ".xlsx"

ActiveWindow.Close

关于excel - 更改工作簿名称的一部分并将文件另存为新名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58102862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com