首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新命名打开的工作簿,而不首先关闭它?

重新命名打开的工作簿,而不首先关闭它?
EN

Stack Overflow用户
提问于 2022-02-14 07:24:13
回答 2查看 231关注 0票数 2

如果我想重命名打开的工作簿,我需要先关闭它,然后重命名它,这有点乏味。

在第三方软件“Office”上,它具有Rename opened workbook without firstly close it的这一特性。

如果不使用其他软件,即使使用VBA解决,也可以用Excel完成吗?

提前,很乐意提供任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-14 08:06:28

重命名打开的工作簿

代码语言:javascript
复制
Option Explicit

Sub RenameMe()
    
    Const ibPrompt As String = "Enter a new file name"
    Const ibTitle As String = "Rename Me"
    
    Dim wb As Workbook: Set wb = ActiveWorkbook
    Dim DotPosition As Long: DotPosition = InStr(1, wb.Name, ".")
    If DotPosition = 0 Then Exit Sub
    
    Dim ibDefault As String: ibDefault = Left(wb.Name, DotPosition - 1)
    
    Dim NewBaseName As String
    NewBaseName = InputBox(ibPrompt, ibTitle, ibDefault)
    If Len(NewBaseName) = 0 Then Exit Sub
    
    Dim FilePath As String: FilePath = wb.FullName
    Dim FolderPath As String: FolderPath = wb.Path & Application.PathSeparator
    Dim Extension As String: Extension = Right(Extension, DotPosition)
    
    Dim ErrNum As Long
    On Error Resume Next
        wb.SaveAs FolderPath & NewBaseName & Extension
        ErrNum = Err.Number
    On Error GoTo 0
    
    If ErrNum = 0 Then
        Kill FilePath
    Else
        MsgBox "Could not rename.", vbCritical, "Rename Me"
    End If
    
End Sub
票数 2
EN

Stack Overflow用户

发布于 2022-02-14 07:35:46

这个问题有各种各样的解决办法,

第一个步骤是运行以下命令:

代码语言:javascript
复制
ActiveWorkbook.SaveAs "MyFile.xls"
Kill "MyPreviousFileName.xls"

你必须保存它才能改变它的名字。如果要保存旧副本,可以删除kill函数。

如果您希望它更精确,您可以这样做(编辑:添加了@funthomas的建议):

代码语言:javascript
复制
Sub Macro2()

Dim rootDir as string
Dim FileName as String

rootDir = "\Desktop"
rootDir  = Replace(rootDir, "@1", environ(UserProfile))

FileName = "Test"

ActiveWorkbook.SaveAs rootDir & FileName & ".xlsm"

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71108363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档