【问题标题】:Code Error in Excel 2003Excel 2003 中的代码错误
【发布时间】:2013-03-01 09:09:15
【问题描述】:

我有一个代码在 excel 2007 上运行得非常好,但在 excel 2003 上却不能运行。它给出“编译错误”并且这条线变成红色。

 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

您的建议会很有帮助。谢谢。如果您需要我方面的任何信息,请告诉我。

这是我的完整代码:

'-------------------------------------
' Create Final Report
'-------------------------------------
Sub FinalReport()
Dim thisWb As Workbook
Set thisWb = ActiveWorkbook
Dim btn, rght As Long
Dim NewWbk As String

NewWbk = "Final_Report"

' Add a new workbook
    Application.Workbooks.Add
    Range("A1").Select
' Rename the workbook
    ActiveWorkbook.SaveAs Filename:=thisWb.Path & Application.PathSeparator & "Final_Report" & ".xls"

    Windows("Tool_01082013.xls").Activate
    Sheets("Reports").Activate

' select the sheet and range to be copied
Range("B2:AO34").Select

' Copy the selected range...
    Selection.Copy
    Workbooks("Final_Report.xls").Sheets("Sheet1").Activate

' and Paste it into the new workbook
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

Windows("Tool_01082013.xls").Activate
    Sheets("Reports_Month").Activate

' select the sheet and range to be copied
Range("A1:DR34").Select

' Copy the selected range...
    Selection.Copy
    Workbooks("Final_Report.xls").Sheets("Sheet2").Activate

' and Paste it into the new workbook
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
Workbooks("Final_Report.xls").Save
Workbooks("Final_Report.xls").Close
Windows("Tool_01082013.xls").Activate
    With Sheets("Reports")
        .Activate
        .Range("A5").Select  '-- move focus to the first item
    End With
End Sub

【问题讨论】:

  • 尝试用 xlPasteValues 替换 xlValues,用 xlPasteSpecialOperationNone 替换 xlNone
  • 对,我把版本弄混了;以为你在 2007 年遇到了麻烦。我在 2007 年进行测试;无法在 2003 年进行测试。抱歉:/
  • 滥用“选择。”是邪恶的。除此之外,我会尝试删除 PasteSpecial 调用的所有参数,但 xlValues 除外。另外,错误是什么?我把水晶球忘在了工作上;)
  • @AlexandreP.Levasseur 它只是说编译语法错误。我在问题中提到的那条线变成了红色。
  • @AlexandreP.Levasseur 好点,复制和粘贴代码可以完全用Workbooks("Final_Report.xls").Sheets("Sheet1").Range("A1:AN33").Value = Workbooks("Tool_01082013.xls").Sheets("Reports").Range("B2:AO34").Value之类的东西代替

标签: vba excel excel-2003


【解决方案1】:

试试这个:

'-------------------------------------
' Create Final Report
'-------------------------------------
Sub FinalReport()

    Dim thisWb As Workbook, _
        finalReport as Workbook, _
        toolWB as Workbook
    Set thisWb = ActiveWorkbook
    Dim copyrange As Range

    ' Add a new workbook
    set finalReport = Application.Workbooks.Add
    ' Rename the workbook
    finalReport.SaveAs Filename:=thisWb.Path & Application.PathSeparator & "Final_Report.xls"

    set toolWB = Workbooks("Tool_01082013.xls")
    Set copyrange = toolWB.Sheets("Reports").Range("B2:AO34")
    finalReport.Sheets("Sheet1").Range("A1").Resize(copyrange.Rows.Count, copyrange.Columns.Count).Value = copyrange.Value
    Set copyrange = toolWB.Sheets("Reports_Month").Range("A1:DR34")
    finalReport.Sheets("Sheet2").Range("A1").Resize(copyrange.Rows.Count, copyrange.Columns.Count).Value = copyrange.Value

    finalReport.Save
    finalReport.Close
    Application.Goto toolWB.Sheets("Reports").Range("A5")

End Sub

【讨论】:

  • 非常感谢你们!最终起作用的是当我用 xlPasteValues 替换 xlValues 和用 xlPasteSpecialOperationNone 替换 xlNone 时。再次感谢
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 2013-12-24
相关资源
最近更新 更多