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名相关推荐

  1. Python 多excel工作簿 多sheet工作表合并

    项目场景: 遇到需要多个excel工作簿.多sheet工作进行合并,但又不想买WPS会员和VBA,就可以借助python进行一个简单的程序编写从而解决. 问题描述 将以上三个工作簿,及其对应工作表表进 ...

  2. 3分钟写个VBA:Excel工作簿所有子表数据一键汇总

    今天同事问我,他要汇总一个工作簿里面十几张子表里面的数据到同工作簿的汇总表里面,怎么操作比较快?然后我就想到了VBA,3分钟给他写(录)了一个宏,一键完成所有数据汇总. 所以今天我就分享这个小技巧,不 ...

  3. VBA小程序_清除工作簿所有Sheet工作表的条件格式

    Sub VBA小程序_清除工作簿所有Sheet工作表的条件格式()Dim sht As WorksheetFor Each sht In Worksheetssht.Activatesht.Cells ...

  4. vb怎样同时打开2个excel工作簿_【赠书】不打开工作簿也能批量合并不同文件夹下多个表格的数据...

    最近推送的五篇文章: <偷懒的技术:打造财务Excel达人>到底有多畅销? <偷懒的技术2>推荐序:未来已来,你准备好了吗? 将"偷懒"进行到底,还在到处找 ...

  5. excel合并多个工作表_如何快速的合并多个 Excel 工作簿至一个工作簿中的工作表?...

    作者:汪汪家的宝贝 链接:https://www.jianshu.com/p/c8ae6852f1da 前言 在日常工作过程中,我们有可能需要把多个Excel工作簿的内容汇总到一张Excel工作表中. ...

  6. Python操作Excel工作簿的示例代码(.xlsx)

    前言 Excel 作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理 Excel 格式文件的 Python 库还是挺多的,比如 xlrd.xlwt.xluti ...

  7. Python操作Excel工作簿(\*.xlsx)

    文章目录 前言 EXCEL文件 测试环境 Excel具体操作 `xlrd`.`xlwt`.`xlutils` `openpyxl` `xlwings` 使用 `xlwings` 的基本方式: 创建一个 ...

  8. python获取excel数据进行判断输出结果到excel,如何使用python xlrd/xlwt从一个excel工作簿提取数据并输出到另一个excel工作簿?...

    我正在为xlutils.xlrd和xlwt创建一个名为excel functions的类,最终我可能会创建一个库.如果你有兴趣帮我做一个删除工作表的功能. 您可能希望转向openpyxl和/或pyex ...

  9. python读取Excel工作簿、工作表

    python读取Excel工作簿.工作表 最近需要用python操作Excel表格,因此大概学习了一下如何操作,表较简单但是很实用,这里记录一些简单的操作. import xlrd # 读取工作簿 w ...

最新文章

  1. 从 C++ 到 Objective-C
  2. Linux文件压缩与解压缩
  3. 答辩完了该思考些什么
  4. C++常见面试题(2019年校招总结)
  5. gen2服务器只显示spbc,gen2-regen培训资料.ppt
  6. 错误记录,找不到sqlite dll
  7. oracle查看数据库所有列,sql – 如何查看oracle数据库中表的列的所有元数据?
  8. python实现二分法查找_python二分法查找
  9. Shell脚本实现SSH免密登录及批量配置管理
  10. 公布几个流氓软件分析报告——哇哇资讯精灵
  11. django模型篇:一对一、一对多、多对多,添加,批量插入和查询操作
  12. 【网络流24题】分配问题 最小最大费用最大流
  13. 微软服务器离线补丁工具包,自己动手离线集成Windows 7 SP1最新补丁
  14. 浏览器可下载的网页链接(百度云链接等),而迅雷(等外置软件)下载失败
  15. 不再东寻西找,常见数据库分页方法都在这里了
  16. cad安装日志文件发生错误_CAD安装问题,CAD安装时为什么显示内部发生错误急?...
  17. sqlite3的使用
  18. 高并发(水平扩展,垂直扩展)
  19. 看天下网络资讯浏览器 下载
  20. Windows 去除我的电脑页面多余的设备和驱动器图标

热门文章

  1. 大学新生看过来:如何将笔记本变WiFi热点
  2. 计算机修改wif教程,如何把笔记本电脑设置wifi热点教程
  3. FFA 2022 专场解读 - 流批一体 平台建设 AI 特征工程
  4. python蚁群算法路径规划_使用python实现蚁群算法
  5. win error 10107
  6. 工作更需要一个踏实的人
  7. 2020年中钢协会员企业钢渣利用率达到了99.09%,我国钢渣处理规模不断增长[图]
  8. 业务会采用BPMN2.0吗?
  9. Pycharm的光标变粗了,如何变回细光标?
  10. vs,qt编程软件中,光标变粗