Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用VBA粘贴到受保护的工作表中,但可以手动粘贴_Vba_Excel - Fatal编程技术网

无法使用VBA粘贴到受保护的工作表中,但可以手动粘贴

无法使用VBA粘贴到受保护的工作表中,但可以手动粘贴,vba,excel,Vba,Excel,我编写了一个宏,它可以将一系列数据从一个工作簿复制到另一个工作簿中。另一个工作簿中的工作表受密码保护,但如果我手动复制并通过,它允许我这样做。但是,当我尝试将其写入宏时,它将不允许粘贴 目前的代码如下: Sub COPYT() ' ' COPYT Macro Range("B2:U109").Select Selection.Copy Workbooks.Open Filename:= _ "_FileName_.xls" Windows("_F

我编写了一个宏,它可以将一系列数据从一个工作簿复制到另一个工作簿中。另一个工作簿中的工作表受密码保护,但如果我手动复制并通过,它允许我这样做。但是,当我尝试将其写入宏时,它将不允许粘贴

目前的代码如下:

Sub COPYT()
'
' COPYT Macro

    Range("B2:U109").Select
    Selection.Copy
    Workbooks.Open Filename:= _
        "_FileName_.xls"
    Windows("_FileName_.xls").Activate
    Range("H10").Paste

End Sub
当我按原样运行宏时,会得到一个

运行时错误“438”:“对象不支持此属性或方法”

调试器显示问题出在最后一行
范围(“H10”)。粘贴

我不能取消对工作表的保护(合规性),我显然可以通过运行宏然后按CTRL+V来解决这个问题,但是(因为这允许我粘贴…),但我更希望这是自动化的。由于工作表受到保护,是否需要为“粘贴”命令使用不同的语法


谢谢

粘贴是工作表的一种方法,而不是范围。试试这个。我假设了图纸参考,但您可能需要调整

Sub COPYT()

Dim wb As Workbook

Set wb = Workbooks.Open(Filename:="_FileName_.xls")
wb.Sheets("compliance").unprotect    
ThisWorkbook.Sheets(1).Range("B2:U109").Copy wb.Sheets("compliance").Range("H10")
wb.Sheets("compliance").protect

End Sub

嗨,SJR。谢谢,但这不起作用,因为工作表不仅仅是受保护的,上面还有密码,就像我上面说的,我无法解除工作表的保护。好的,对不起,没有正确阅读您的问题。你知道它是如何被保护的吗?你不能因为没有密码而取消对它的保护吗?没错,没有密码。我可以输入一些代码来打开它,但由于公司的合规性,我真的不想这样做……除非UserInterfaceOnly已设置为True,否则我认为您无法粘贴到受保护的工作表。有人告诉您密码是一个很好的理由?如果工作表的Range属性受到保护,您是否允许访问它?如果您真的愿意,您可以使用
SendKeys
模拟复制粘贴操作。手动复制/粘贴时,您使用的范围是否与宏相同?是的,所有操作都相同。事实上,如果我让宏失败,那么我可以直接按CTRL+V键,它就可以为我完成任务。我不明白如果工作表受到保护,如何使用CTRL+V键进行粘贴。我也不明白。。。。