VBA跨表操作和取数据的各种问题,如跨表取其他EXCEL工作簿的sheet名
1 本地取其他EXCEL的表名,很简单
1.1 下面2种写法都是可以的
Sub williamDing1()
k = 1
For i = 1 To Worksheets.CountWorksheets("统计").Cells(k, 1) = Worksheets(i).Namek = k + 1
Next
End SubSub williamDing2()
j = 1
For Each sh1 In WorksheetsWorksheets("统计").Cells(j, 2) = sh1.Namej = j + 1
Next
End Sub
1.2 跨表去统计,崩溃了,遇到了好多问题
下面这段是错误代码举例
'这是一个错误代码,例子
Sub williamDing10()
path1 = "C:\Users\Administrator\Desktop"
path2 = "test1.xlsm" '为了读其他的EXCEL文件
path3 = "test.xlsm"j = 1
For Each sh1 In Workbooks(path1 & "\" & path2).WorksheetsWorkbooks(path1 & "\" & path3).Worksheets("统计").Cells(j, 2) = sh1.Namej = j + 1
Next
End Sub
2 跨表取其他工作表内容的问题和解决
2.1 总结下问题
- 引用其他工作表,路径问题
- 操作前需要先打开的问题
- 打开其他工作表,在前台,和后台,避免被打断的问题
2.2 问题1:如何取其他工作簿的名字
- 取workbooks().name
- 如果是本表的,默认省略 wb,或,指定 thisworkbook, activebook 都比较简单
- 如果是取其他表的, workbooks( 文件名 / 相对路径 ).name,只能是相对路径=文件名,而不能是 绝对路径-------感觉这个非常反常理,算特例吧!
- 但是 workbooks.open(绝对路径) 需要是绝对路径
file系统的 file 返回的就是绝对路径
只有file.name 才是所谓的文件名
从文件夹内取的file,是文件
Set fd1 = fso.getfolder(path1)
For Each f1 In fd1.FilesIf f1.Name Like "*.xlsm" ThenDebug.Print "f1=" & f1Debug.Print "f1.Name=" & f1.NameEnd If
Next
- 其他方法也可以取得名字:path必须是完整的绝对路径!!
- 其他方法也可以取得名字:思路就是吧 workbook 定义为对象,然后取得其 object.name 属性
- 如对象的方法
- 如对象fso的方法(fso.getfilename() 找不到的文件也不报错,还可以正常返回。。。)
Sub test_getname1()
'------ 取当前,或活跃的工作表名字名字方法
Debug.Print ThisWorkbook.Name
Debug.Print ActiveWorkbook.Name'------ 取其他工作表名字名字方法
'这下面的算个特例
'workbooks("") 路径是相对路径,居然不是绝对路径,而且要求很严格 ,找不到就报下标越界(对象集合是数组吧?)
Debug.Print Workbooks("test.xlsm").Name
'Debug.Print Workbooks("test333333.xlsm").Name '没有的文件,找不到就报下标越界
'Debug.Print Workbooks("C:\Users\Administrator\Desktop\test.xlsm").Name '有这个文件也报错'----通用的对象方法, createobject
Dim wb1 As Object
Set wb1 = CreateObject("C:\Users\Administrator\Desktop\test.xlsm")
Debug.Print wb1.Name'------ fso相关方法
'对文件名识别,fso 最好输入 绝对路径,但是fso 错误路径也不报错可返回,没有灵魂
Dim fso As Object
Set fso = CreateObject("scripting.filesystemobject")
Debug.Print fso.getfilename("C:\Users\Administrator\Desktop\test.xlsm")'故意写本层级没有的文件,居然不报错
Debug.Print fso.getfilename("test.xlsm")
Debug.Print fso.getfilename("test2222.xlsm")'用fso取文件名,需要用 getfilename,不能用下面这种
'Dim f1 As Object
'Set f1 = fso.opentextfile("C:\Users\Administrator\Desktop\test.xlsm", 1, False)
'Debug.Print f1.NameEnd Sub
2.3 操作其他工作簿workbook前,需要先打开这个 表
代码1: 可以跨表取的其他工作簿的内容
- 下面代码还是有些问题,之后接着优化
- 但可以实现,另外的表无论是否已经打开,都能取到了
Sub williamDing3()b = 1
path1 = "C:\Users\Administrator\Desktop"
path2 = "test1.xlsm"
path3 = "test.xlsm"'文件需要打开,才能读取和写,否则无法操作--后面用到他会报,超过下标越界
'但是下面这些写法,会打开新表
'Workbooks.Open (path1 & "\" & path2) '必须加绝对路径,否则找不到
'这下面的2种方法也会打开Excel表
Dim wb1 As Object
'Set wb1 = Workbooks.Open(path1 & "\" & path2)
Set wb1 = CreateObject(path1 & "\" & path2) '打开不再前台显示,其实也打开了'当前代码的excel不需要额外打开,thisworkbook逻辑上必然是已经打开了
For i = 1 To wb1.Worksheets.CountWorkbooks(path3).Worksheets("统计").Cells(b, 3) = wb1.Worksheets(i).Nameb = b + 1
NextEnd Sub
VBA跨表操作和取数据的各种问题,如跨表取其他EXCEL工作簿的sheet名相关推荐
- Python 多excel工作簿 多sheet工作表合并
项目场景: 遇到需要多个excel工作簿.多sheet工作进行合并,但又不想买WPS会员和VBA,就可以借助python进行一个简单的程序编写从而解决. 问题描述 将以上三个工作簿,及其对应工作表表进 ...
- 3分钟写个VBA:Excel工作簿所有子表数据一键汇总
今天同事问我,他要汇总一个工作簿里面十几张子表里面的数据到同工作簿的汇总表里面,怎么操作比较快?然后我就想到了VBA,3分钟给他写(录)了一个宏,一键完成所有数据汇总. 所以今天我就分享这个小技巧,不 ...
- VBA小程序_清除工作簿所有Sheet工作表的条件格式
Sub VBA小程序_清除工作簿所有Sheet工作表的条件格式()Dim sht As WorksheetFor Each sht In Worksheetssht.Activatesht.Cells ...
- vb怎样同时打开2个excel工作簿_【赠书】不打开工作簿也能批量合并不同文件夹下多个表格的数据...
最近推送的五篇文章: <偷懒的技术:打造财务Excel达人>到底有多畅销? <偷懒的技术2>推荐序:未来已来,你准备好了吗? 将"偷懒"进行到底,还在到处找 ...
- excel合并多个工作表_如何快速的合并多个 Excel 工作簿至一个工作簿中的工作表?...
作者:汪汪家的宝贝 链接:https://www.jianshu.com/p/c8ae6852f1da 前言 在日常工作过程中,我们有可能需要把多个Excel工作簿的内容汇总到一张Excel工作表中. ...
- Python操作Excel工作簿的示例代码(.xlsx)
前言 Excel 作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理 Excel 格式文件的 Python 库还是挺多的,比如 xlrd.xlwt.xluti ...
- Python操作Excel工作簿(\*.xlsx)
文章目录 前言 EXCEL文件 测试环境 Excel具体操作 `xlrd`.`xlwt`.`xlutils` `openpyxl` `xlwings` 使用 `xlwings` 的基本方式: 创建一个 ...
- python获取excel数据进行判断输出结果到excel,如何使用python xlrd/xlwt从一个excel工作簿提取数据并输出到另一个excel工作簿?...
我正在为xlutils.xlrd和xlwt创建一个名为excel functions的类,最终我可能会创建一个库.如果你有兴趣帮我做一个删除工作表的功能. 您可能希望转向openpyxl和/或pyex ...
- python读取Excel工作簿、工作表
python读取Excel工作簿.工作表 最近需要用python操作Excel表格,因此大概学习了一下如何操作,表较简单但是很实用,这里记录一些简单的操作. import xlrd # 读取工作簿 w ...
最新文章
- 自己挖的坑自己填--docker创建实例出现Waiting for SSH to be available…
- android ios logo原型,iOS关于logo和LaunchImage处理
- Python--协程(gevent模块)
- LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)
- list快速默认排序java_1. java Collections.sort()实现List排序的默认方法和自定义方法...
- 老板可以停,因为可能赚了钱
- Python import容易犯的一个错误
- ubuntu如何更改IP地址
- 浅谈JSONP跨域漏洞
- 方程检验格式图片_Excel绘制标准曲线全图片教程
- 模拟双色球系统判断中奖情况
- java计算机毕业设计学生宿舍信息管理源码+系统+mysql数据库+lw文档
- MySQL --alter table的使用
- 数据库中的常见关键字的用法
- 将数字划分为素数的乘积
- 运维工程师常用平台及工具
- 项目管理PMP-扫盲篇
- 30岁前!我从农民工自学成为了一个程序员
- gre 填空43-63
- 物联网管理系统平台源码
热门文章
- 程浩阐述AI创业的五个关键问题 透露新投资项目
- java swt canvas_SWT中的canvas
- Linux终端设置成256色模式
- 艺体计算机教师考核细则,艺术学院教师教学质量考核细则(暂行)
- 二进制,十进制与十六进制间的相互转换
- linux5磁盘配额,RHEL5之磁盘配额
- R分析实现对招聘网站薪资预测分析
- 管状合金电阻和片状合金电阻的区别_R007合金电阻 电动滑板车专用电阻 大毅现货供应...
- UBUNTU 12.04 安装SOCKS5代理服务器DANTE-SERVER
- wifi密钥破解(WPA2/PSK)