438错误粘贴到活动工作簿中

时间:2018-05-07 19:30:52

标签: excel vba runtime-error

当我尝试粘贴到我当前的工作簿(下面的最后一行代码)时,我收到438错误 - '对象不支持此属性或方法'。我知道当我引用两个不同的工作簿(即使用workbook.open设置两个工作簿)时代码可以工作,但是当我尝试使用ThisWorkbook来引用我自己的工作簿时,它就会失败。有任何想法吗?遗憾的是,我无法在论坛的其他地方找到解决方案。感谢。

Dim Data As Workbook

FName = Application.GetOpenFilename
Set Data = Workbooks.Open(FName)

Data.ActiveSheet.Range("A5").copy
ThisWorkbook.Sheets("Cars").Range("B5").Paste

3 个答案:

答案 0 :(得分:2)

Range没有方法Paste。它只有PasteSpecial WorksheetPaste,如果你想使用那个。{/ p>

但你真正想要的是

Data.ActiveSheet.Range("A5").Copy ThisWorkbook.Sheets("Cars").Range("B5")

答案 1 :(得分:1)

ThisWorkbook.Sheets("Cars").Range("B5").Paste

Sheets集合返回Object,这意味着链接到它的任何内容都将是一个后期绑定调用,在运行时解析。这也意味着 IntelliSense 无法帮助您,因为没有关于实际类型的编译时知识。

声明Range对象变量:

Dim target As Range

然后分配:

Set target = ThisWorkbook.Worksheets("Cars").Range("B5")

如果"Cars"工作表在编译时存在,请为其提供代码名称并使用它,而不是从Worksheets集合中取消引用该对象(使用{{ 1}}当您打算提取Worksheets时,Worksheet集合包含许多非工作表工作表类型):

Sheets

现在,当您输入此点时,您将获得 IntelliSense

Set target = CarsSheet.Range("B5")

然后,进行不存在的成员通话要困难得多:

intellisense showing no Paste member on a Range object

那就是说,as GSerg already mentioned你真正应该做的是提供target. 方法的目标范围作为参数。

答案 2 :(得分:0)

如果您只需要价值,那么您可以使用以下内容:

import requests


   url = 'https://api.optconnect.com/summit/beta/accounts/login/app_secret'
   data = {'accountId': 000,
        'applicationId': 000,
        'secret': '000'}
   data = json.dumps(data)
   headers = {'accept': 'application/json', 'content-type': 'application/json' }
   req = requests.get(url=url, data=data, headers=headers)
   print(req.status_code)