ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1009|回复: 4

[求助] 如何复制一个未知文件名的表格数据到另外一个表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-22 16:32 | 显示全部楼层 |阅读模式
请教各位老师一个问题如何在一个表格实现其他表格的VBA程序,
想把文件的数据复制到旁边这个表格,要复制的表格文件名是不固定,而且不存放VBA代码的
图片1.png

Desktop.zip

61.05 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2020-2-22 16:56 | 显示全部楼层
试试下列代码(话说:你的这个意图实际应用中究竟有多大意义,若出于学习VBA,倒不失为一“敢想敢做”):
  1. Sub theCopyNextBook()
  2.     Dim wb As Workbook, theWindowIndex&, MyWindowIndex&
  3.     '
  4.     MyWindowIndex = Windows(ThisWorkbook.Name).Index
  5.     For Each wb In Application.Workbooks
  6.         If Windows(wb.Name).Visible Then
  7.             theWindowIndex = Windows(wb.Name).Index
  8.             If Abs(theWindowIndex - MyWindowIndex) = 1 Then
  9.                 wb.Worksheets(1).Columns(1).Copy
  10.                 ThisWorkbook.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteValues
  11.                 Exit For
  12.             End If
  13.         End If
  14.     Next wb
  15. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 17:10 | 显示全部楼层
gbgbxgb 发表于 2020-2-22 16:56
试试下列代码(话说:你的这个意图实际应用中究竟有多大意义,若出于学习VBA,倒不失为一“敢想敢做”):
...

谢谢老师,主要是想学习一下,老师可以讲解一下吗,假如要复制某个单元格过去要修改哪些

TA的精华主题

TA的得分主题

发表于 2020-2-22 18:19 | 显示全部楼层
kaiwozhe 发表于 2020-2-22 17:10
谢谢老师,主要是想学习一下,老师可以讲解一下吗,假如要复制某个单元格过去要修改哪些

消磨时间,给你授课:
  1. Sub theCopyNextBook()
  2.     Dim wb As Workbook, theWindowIndex&, MyWindowIndex&
  3.     Dim theFinalRow&, arr As Variant
  4.     '
  5.     MyWindowIndex = Windows(ThisWorkbook.Name).Index '当前代码所在工作簿窗口的索引号(后文简述为序号)
  6.     For Each wb In Application.Workbooks '遍历循环已打开的所有工作簿
  7.         If Windows(wb.Name).Visible Then '防止有窗口被隐藏的工作簿被当作目标工作簿(譬如存在个人宏工作簿等)
  8.             theWindowIndex = Windows(wb.Name).Index '该可见工作簿窗口的序号
  9.             If Abs(theWindowIndex - MyWindowIndex) = 1 Then '若窗口序号紧挨,判断为找到了目标工作簿
  10.                 '下方楼主所谓的粘贴(事实上,后文代码不再是粘贴,而写入了)操作作了大的变更
  11.                 With wb '用With结构限定下方的所有属性操作针对的都是wb这一目标工作簿,初学者要尽量掌握这种写法
  12.                     With .Worksheets(1) '再来个With结构限定下方的所有属性操作针对的都是Wb工作簿的第一个工作表
  13.                         theFinalRow = .Cells(.Rows.Count, 1).End(xlUp).Row '取得A列最靠后的存在数据的数据行号
  14.                         '把第1列从第1行起始到上文所说的theFinalRow行止的单元格区域一次性读入arr变量(显然,此时arr变量是一个二维数组了)
  15.                         arr = .Range(.Cells(1, 1), .Cells(theFinalRow, 1))
  16.                     End With
  17.                 End With
  18.                 '
  19.                 '把arr数组写入当前代码所在工作簿的第1个工作表的A1单元格起始的A列
  20.                 '注:Resize方法允许Range对象(此例Range对象为.Cells(1),即工作表的第1个单元格,用大白话说,就是A1单元格)在新区域内调整大小
  21.                 '再说白点吧:Resize后的新区域的数量行为Ubound(arr)行,数量列为1列。事实上,
  22.                 '也可写为.Resize(Ubound(arr)),即把列数省略,省略列数的情况下扩展的区域的列数大小默认为与Range的列数数量是一样的
  23.                 '补:Ubound()函数是取得数组的维数,其用法自己花时间去帮助文件中查询,你没付费^_^,教你的已经过多了
  24.                 ThisWorkbook.Worksheets(1).Cells(1).Resize(UBound(arr), 1) = arr '把数组内容写入工作表
  25.                 Exit For '显然目的达成了,不用再往后循环了吧
  26.             End If
  27.         End If
  28.     Next wb
  29. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 21:50 | 显示全部楼层
gbgbxgb 发表于 2020-2-22 18:19
消磨时间,给你授课:

谢谢老师,已经学会自己需要实现的效果了,感谢你愿意空出时间教我,谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 08:50 , Processed in 0.033977 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表