使用vba创build新工作簿时出现错误,请复制许多工作表中的2个

下面的代码导致与我想要的2工作表.xls。 只有我没有最终的价值观..格式是在那里(我不认为它应该是粘贴。价值。dammit。),和.xls有一个牢不可破的链接到原始文件不需要在那里(我想不应该在那里)。 所有单元格只包含值,并且不包含源工作簿中包含的任何公式。

当我打开新创build的.xls文件时,我收到消息“ws name .xls的文件格式和扩展名不匹配,文件可能损坏或不安全,除非您信任它的来源,否则不要打开它。你还想打开吗?“

我讨厌缺乏信任。:)

我究竟做错了什么?

Sub QUOTE_ITEM_OUTPUT() Dim ws As Worksheet Dim Filename As String Dim Filelocation As String Dim UserName As String Dim Password As String Filename = Worksheets("CALCULATION PAGE").Range("ITEMNUM").Value & "_" & Worksheets("CALCULATION PAGE").Range("PDFSAVEREV").Value & ".xls" Filelocation = "\\GSWGS\Apps\Global\FILES\Import\GWS-Upload-TST\" With Application .ScreenUpdating = False ' Copy specific sheets Sheets(Array("ITEM OUTPUT", "ROUTING")).Copy ' Paste sheets as values For Each ws In ActiveWorkbook.Worksheets ws.Cells.Copy ws.[A1].PasteSpecial Paste:=xlValues Application.CutCopyMode = False Cells(1, 1).Select ws.Activate Next ws Cells(1, 1).Select ActiveWorkbook.SaveCopyAs Filelocation & Filename ActiveWorkbook.Close SaveChanges:=False .ScreenUpdating = True End With End Sub 

您保存为.xls文件,但尚未在saveAs方法中指定该文件格式。 这就是为什么你得到安全警告…

您需要在SaveAs方法中指定该参数。

 ActiveWorkbook.SaveAs Filename:=Filelocation & Filename, FileFormat:=56 

这是一个链接到MSDN页面的各种fileFormat参数: https ://msdn.microsoft.com/en-us/library/office/ff198017.aspx

编辑 – 对于你面临的第二个问题:

至于格式正在被传送,这是因为你没有使用正确的枚举值。

 ws.[A1].PasteSpecial Paste:=xlValues 

应该:

 ws.[A1].PasteSpecial Paste:=xlPasteValues 

使用另一个子工具来“清理”工作表

 Sub ApplyValuesTo(ByVal sh As Excel.Worksheet) For Each cell In sh.UsedRange.Cells With cell .Value = .Value '// This may take a while; the next line will allow you to manually '// break if needed (eg If you have a lot of data in the sheet) DoEvents End With Next End Sub