首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用自己的VBA代码移动excel文件?

如何使用自己的VBA代码移动excel文件?
EN

Stack Overflow用户
提问于 2022-05-20 15:20:02
回答 2查看 75关注 0票数 1

我有一个excel文件,我需要从一个文件夹移动到另一个点击按钮。目前,我有以下代码。

代码语言:javascript
复制
Private Sub btnReview_Click()
Dim FSO
Dim projectNumber As String
Dim fileSource As String
Dim fileDestination As String
projectNumber = Range("AI6").Value

    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    fileSource = ActiveWorkbook.path & "\" & ActiveWorkbook.Name

    fileDestination = getProjectFolder(projectNumber)
    '        ActiveWorkbook.Close True
    FSO.MoveFile fileSource, fileDestination
End Sub

其中,getProjectFolder返回要将文件移动到的文件夹的路径(包括文件的新名称)。

这在行FSO.MoveFile上失败,错误代码为70,“权限被拒绝”。我确信这是因为文件打开时不可能移动或重命名。在尝试移动文件夹之前,我已经尝试过关闭它,但是很明显,在ActiveWorkbooks.Close之后,没有执行任何行就结束了这个子文件夹。

有什么方法可以不使用外部文件/代码来实现我想要做的事情吗?我希望用户能够按下工作表上的按钮,然后将工作表移动到一个单独的文件夹中。这个是可能的吗?我唯一的其他想法是使用SaveAs方法将文件保存到正确的位置,然后从原始文件夹中删除原始文件。这似乎是一个相当不雅的解决方案,我不知道这是怎么可能的。

任何想法、技巧、技巧、解决办法等都会受到赞赏。

EN

Stack Overflow用户

发布于 2022-05-20 17:57:58

做起来很容易!尝试如下所示,您可以将其保存在一个新文件夹中,然后继续删除旧文件。

代码语言:javascript
复制
    Public Sub MoveMeToANewWorld()
        currentName = ThisWorkbook.Name,
        currentPathAndName = ThisWorkbook.FullName 
        currentPath = Replace(currentPathAndName, currentName, "")
        newPath = "NewFolder\"
        
    With ThisWorkbook
        .SaveAs Filename:= currentPath & newPath & currentName, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End with

'Deleting the OldFile
    With New FileSystemObject
        If .FileExists(currentPathAndName) Then
            .DeleteFile currentPathAndName 
        End If
    End With
    
    End Sub

希望它能帮到你!

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72321314

复制
相关文章

相似问题

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