为什么我的SaveAs文件使用正确的名称保存文件,但没有内容?

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

我已经能够硬编码我的文件,然后保存在同一个文件夹中。但是,使用正确名称创建的新文件根本没有内容。我发现了如何在当前目录中保存SO上的所有帮助,但无法解决此问题。任何有用的东西,因为我对VBA很新!

     Sheets.Select
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Dim thisWb As Workbook, d As Integer

    Set thisWb = ActiveWorkbook
    Workbooks.Add
    d = InStrRev(thisWb.FullName, ".")
    'ActiveWorkbook.SaveAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)
    ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

    ActiveWorkbook.Close savechanges:=False

End Sub
excel vba
2个回答
5
投票

你的行Workbooks.Add创建一个新的工作簿,这是一个空文件。这就变成了ActiveWorkbook,因此你的下一行保存了新的Workbook,它是空的。

通过查看您的代码,我猜您正在尝试保存源文件的副本。如果是这样,你不需要Workbooks.Add线 - 删除它,它应该解决你的问题。如果您尝试添加工作簿以及保存副本: - 使用适当的引用而不是Active,即

ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

thisWb.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

你应该尽量避免使用SelectActive语句(这可以完全避免你的问题)。如需进一步阅读,请查看:How to avoid using Select in Excel VBA


1
投票

让我们看一下代码的最后一点:

Workbooks.Add 'Creates a new Blank Workbook, and makes it the ActiveWorkbook
d = InStrRev(thisWb.FullName, ".")
ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)
'Saves your new Blank ActiveWorkbook

您需要在新工作簿中添加内容,还是在另一个工作簿上执行SaveAs(例如thisWb.SaveCopyAs?)

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