当前位置: 首页 > 知识库问答 >
问题:

Excel-VBA Range类的PasteSpecial方法失败

尉迟华翰
2023-03-14
    SrcWB.Worksheets("1").Range("A1:K35").Copy
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues)
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats)
   SrcWB.Worksheets("1").Range("A1:K35").Value = TgtWB.Sheets("1").Range("A1:K35")
Sub CopySch()

Dim sh As Worksheet
Dim TgtWB As Workbook
Dim SrcWB As Workbook

Application.EnableEvents = False
Application.ScreenUpdating = False

Set TgtWB = ThisWorkbook

FileToOpen = Application.GetOpenFilename(FILEFILTER:="Excel Workbooks (*.xls*),*.xls*", Title:="Please select a file")

If FileToOpen = False Then
    MsgBox "No File Specified.", vbExclamation, "ERROR"
    Exit Sub

Else
    Set SrcWB = Workbooks.Open(FileToOpen, xlUpdateLinksNever, ReadOnly:=True)


    SrcWB.Worksheets("1").Range("A1:K35").Copy
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues)
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats)

End If

Application.EnableEvents = True
Application.ScreenUpdating = True

SrcWB.Close

End Sub

对此,作者提出了建议

共有1个答案

郎聪
2023-03-14

转到模块的顶部并添加“Option Explicit”。

Option Explicit

Sub CopySch()

Dim sh As Worksheet
Dim TgtWB As Workbook
Dim SrcWB As Workbook
...

应该能解决你的问题。

编辑:让我们再尝试一下这段代码。我已经尝试了它的代码,没有错误。

Option Explicit
Sub CopySch()

Dim sh As Worksheet
Dim TgtWB As Workbook
Dim SrcWB As Workbook
Dim FileToOpen As String
Application.EnableEvents = False
Application.ScreenUpdating = False

Set TgtWB = ThisWorkbook

FileToOpen = Application.GetOpenFilename(FILEFILTER:="Excel Workbooks (*.xls*),*.xls*", Title:="Please select a file")

If FileToOpen = "False" Then
    MsgBox "No File Specified.", vbExclamation, "ERROR"
    Exit Sub

Else
    Set SrcWB = Workbooks.Open(FileToOpen, xlUpdateLinksNever, ReadOnly:=True)

    SrcWB.Worksheets("1").Range("A1:K35").Copy
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues)
    TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats)

End If

Application.EnableEvents = True
Application.ScreenUpdating = True

SrcWB.Close

End Sub
 类似资料:
  • 我试图写一个宏,复制表格(颜色,格式等)从工作表的每一天(星期一,星期二,星期三,星期四和星期五)和粘贴到工作表(262个工作表)为同一天。(星期一-星期一等)表名我在表“数据”。

  • 我在这个站点(和其他地方)读过很多次,如果可能的话,最好避免在VBA宏中复制/粘贴。例如,与其这样做... ...这样做应该更好/更快: 但是在一个大表(15列,100K行)上测试,复制/粘贴版本要快得多(1.9秒比2.7秒)。即使我先将tbl.DataBodyRange声明为范围变量,差异仍然存在。 我认为这可能是ListObjects的一些奇怪属性,但实际上没有它们的区别更大: 有人知道为什么

  • 本文向大家介绍C#导出Excel的方法,包括了C#导出Excel的方法的使用技巧和注意事项,需要的朋友参考一下 这段时间需要用C#做个页面,把网格中查询出来的数据导出到Excel中。在网上找了一大堆C#导出Excel的代码,试来试去都不可用。好多代码是针对.net 2.0或者3.0的,无奈我的程序用的是.net 1.0开发的,造成好多函数都不能用。之后就转变思想,寻找“UltraWebGrid导出

  • 本文向大家介绍C# winform打印excel的方法,包括了C# winform打印excel的方法的使用技巧和注意事项,需要的朋友参考一下 前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点在于如何将excel转换成Graphics对象,在NPO

  • 本文向大家介绍用python读写excel的方法,包括了用python读写excel的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了用python读写excel的方法。分享给大家供大家参考。具体如下: 最近需要从多个excel表里面用各种方式整理一些数据,虽然说原来用过java做这类事情,但是由于最近在学python,所以当然就决定用python尝试一下了。发现python果然简洁很

  • 我正试图将一组数据从一个工作簿复制到另一个工作簿,假设我要将数据从a册复制到B册。首先,我要去BookA册复制列表,然后去BookB册运行copydata宏下面(我想在回到BookB册的前一个工作表之前将数据粘贴到新工作表上。) 由于工作表类的粘贴方法失败,宏在第6行失败。有人知道怎么修好它吗?