各位大神解释下这段vba代码为什么报错?

正在学习vba跨表操作。我建了两个工作簿:跨文件访问.xlsm“和”销售表.xlsm“,现在要将销售表.xlsm中的”销售表-1“表数据复制到跨文件访问.xlsm工作簿中... 正在学习vba跨表操作。我建了两个工作簿:跨文件访问.xlsm“和”销售表.xlsm“,现在要将销售表.xlsm中的”销售表-1“表数据复制到跨文件访问.xlsm工作簿中的”销售“这个表里.
我写了两段代码,上一段能运行,下一段报错。
按理说,sheet1.activate能正常运行,那为什么在上面的代码中用sheet1就要报错。请大神解答下。谢谢。
展开
 我来答
帐号已注销
科技发烧友

2021-09-08 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2018
采纳率:0%
帮助的人:920万
展开全部

Sheet1   是表这个对象的名称,同时也是指对象本身

销售表-1   是表的Name,是对象的参数之一

1   是表的位置编号(按Sheet排列顺序),所以其实还可以写作 Worksheets(1),也是对象的参数

以上三者是有区别的。

名称也可以修改(选中以后在左下角的属性窗口里改),它可以直接用,但限于本工作簿,所以它不需要(不能)跟在Workbooks父对象后。你可以写Sheet1.Activate,但不能写Workbooks("xxx").Sheet1.Activate。

Name是一个参数,任意工作簿的任意工作表都有的属性,所以前面可以指定Workbooks父对象,你跨表应该使用它。

编号也一样,可以跨工作簿使用,但因为编号很容易发生变化,不小心就会出错。

在下图的例子里:Worksheets("Sheet1")   Workssheets(2)   Sheet3 指的是同一个表。

zhongguoing001
2021-09-08 · 超过13用户采纳过TA的回答
知道答主
回答量:36
采纳率:60%
帮助的人:9万
展开全部
Windows("销售表").Activate
Sheets("销售表-1").Select
Range("A1").Select
Selection.Copy
Windows("跨文件访问").Activate
Sheets("销售").Select
Range("A1").Select
ActiveSheet.Paste

Windows‘就是当前打开的工作簿
如果想后台读取
Dim VBExcel As Excel.Application '定义Excel服务器应用程序
Dim ExcelBook As Excel.Workbook '定义Excel工作簿对象
Dim excelsheet As Excel.Worksheet
Set VBExcel = CreateObject("Excel.Application") '创建一个Excel应用程序
Set ExcelBook = VBExcel.Workbooks.Open(ThisWorkbook.Path & "\*.xlsx") '打开同路径某个名称excel文件
Set excelsheet = ExcelBook.Worksheets(“表名称或者表序号”)
‘这边具体操作

VBExcel.DisplayAlerts = False’屏蔽弹窗,因为关闭时会问你是否保存所以加这句
VBExcel.Quit‘关闭
Set VBExcel = Nothing’清空
Set ExcelBook = Nothing
Set excelsheet = Nothing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ynzsvt
2021-09-08 · TA获得超过6659个赞
知道大有可为答主
回答量:1.5万
采纳率:40%
帮助的人:2584万
展开全部
你以为错误在这个地方,实际上错误不在这个地方。
应该是你的当前工作簿发生了改变,导致空格后面的目标的工作簿变了引起错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式