ActiveWorkbook.SaveAs 代码运行但无法保存工作簿

问题描述 投票:0回答:1

我运行代码,它询问我是否要将工作簿保存到该位置,我单击是,然后代码结束。我检查了文件夹,文件没有保存在那里。我在这里发布相关的代码部分。请注意,还有其他变量和代码部分我没有包含在此处。我正在努力将其分配给其中一张纸上的命令按钮,并希望最终得到“否”答案以进入流程的下一步,将多张纸的部分保存为 PDF,然后打印相同的报道。我还有其他问题,但一旦我解决了这个紧迫的问题,如果我不能解决另一个问题,我会回来。

Sub mac_CreateProposalFolder()

    Dim varFilePathDir As Range
    Set varFilePathDir = Range("cell_FilePathDrive")

    Dim varFilePathProjYear As Range
    Set varFilePathProjYear = Range("cell_FilePathYear")

    Dim varFilePathProjYNum As Range
    Set varFilePathProjYNum = Range("cell_FilePathYearSuffix")

    Dim varFilePathProjName As Range
    Set varFilePathProjName = Range("cell_DDGJobName")

    Dim varFilePathSubFold1 As Range
    Set varFilePathSubFold1 = Range("cell_FilePathSubFolder1")

    Dim varBusinessUnit As Range
    Set varBusinessUnit = Range("cell_BusinessUnit")

    Dim varDDGJobNumber As Range
    Set varDDGJobNumber = Range("cell_DDGJobNumber")

    Dim varProposalDate As Range
    Set varProposalDate = Range("cell_ProposalDate")

    Dim varFilePathSaveAs1Survey As String
    Dim varFilePath1Survey As String

    Dim varAnswer5Survey As VbMsgBoxResult

    varFilePath1Survey = varFilePathDir & varFilePathProjYear & "-000\" & varFilePathProjYear & varFilePathProjYNum & " " & varFilePathProjName
    
    varFilePathSaveAs1Survey = varFilePath1Survey & "\" & varFilePathSubFold1 & "\" & varBusinessUnit & " Proposal for " & varDDGJobNumber & " " & varFilePathProjName & " on " & varProposalDate
    
        'Checks if the proposal file has been created for this project and asks if the user wishes to save the file if not, or cancel the operation.
        If VBA.FileSystem.Dir(varFilePathSaveAs1Survey) = vbNullString Then
            varAnswer5Survey = MsgBox("Excel file for this business unit and proposal date has not been saved to this folder yet. Do you wish to save this excel file to the folder?", vbYesNoCancel, "Save Excel Workbook?")
            Select Case varAnswer5Survey
                Case vbYes
                    ActiveWorkbook.SaveAs Filename:=varFilePathSaveAs1Survey & ".xlsm"
                Case vbNo
                    'saved spot for future code options.
                    Exit Sub
                Case vbCancel
                    Exit Sub
            End Select
        End If
        On Error Resume Next
End Sub

我尝试了多种另存为的方法-使用

ThisWorkbook.SaveAs
代替
ActiveWorkbook.SaveAs
(首选项是“活动”而不是“这个”,因为工作簿将是一个通用的工作簿,作为活动的工作簿保存到文件夹中这个项目和这个日期);

ActiveWorkbook.SaveAs ([varFilePathSaveAs1Survey & ".xlsm", xlOpenXMLWorkbookMacroEnabled]); 
ActiveWorkbook.SaveAs Filename:= varFilePathSaveAs1Survey & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled; ActiveWorkbook.SaveAs ([Filename:= varFilePathSaveAs1Survey & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled])

和其他多种配置。我什至录制了一个宏并从中复制文本,同时更改桌面位置以将宏保存到首选位置:

    ChDir "C:\Users\******\OneDrive - **********, PC\Desktop"
    ActiveWorkbook.SaveAs Filename:= _
        "https://******-
my.sharepoint.com/personal/******/Documents/Desktop/PROJECT%20BUDGET-Rough%20Draft%20V1.xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

注意:***** 是由于保护内部信息而删除的链接部分。

到目前为止,所有推荐的典型方法都没有奏效,代码编译时,它只是不会保存。

我在 Dell Precision、Microsoft® Excel® for Microsoft 365 MSO(版本 2302....64 位)上使用 Windows 11

编辑:问题的解决方案在于日期格式 - 单元格将其格式化为“YYYY-MM-DD”,但代码将其读取为 mm\dd\yyyy 并且由于试图查找 mm 目录而出错,然后是 dd 目录,然后是 yyyy 目录。更改日期格式修复了错误。

excel vba save-as
1个回答
0
投票

如果您在保存时没有收到任何错误,但文件不在您期望的位置,那么

MsgBox ActiveWorkbook.FullName

调用

SaveAs
后会立即显示工作簿的实际保存位置。这可能会帮助您修复代码。

来自斯科特

Format(varProposalDate, "YYYY-MM-DD")

将以可在文件路径或文件名中使用的格式为您提供日期。

© www.soinside.com 2019 - 2024. All rights reserved.