Excel VBA如何从另一个工作簿中获取工作表对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel VBA如何从另一个工作簿中获取工作表对象相关的知识,希望对你有一定的参考价值。
好吧,我意识到这看起来像是重复的,但是我向你保证,至少在经过2个小时的互联网搜索后,它不会出现!
这里是我提出问题之前仔细阅读的所有其他相关链接:https://www.cfo.com/spreadsheets/2011/08/referring-to-other-worksheets-or-workbooks-in-an-excel-macro/
https://www.excelcampus.com/vba/copy-paste-another-workbook/
"Run-Time error '438': Object doesn't support this property or method." Range.values = Range.values
https://www.reddit.com/r/excel/comments/akrxxu/vba_referencing_worksheets_by_codename_in/
https://www.thespreadsheetguru.com/blog/vba-guide-to-referencing-excel-worksheet-tabs
https://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
How to refer to a Excel Worksheet by its VBA Object Name in another Workbook?
Excel tab sheet names vs. Visual Basic sheet names
VBA Getting data from another Sheet
How to copy sheets from a workbook to another workbook
EXCEL VBA: Copy Sheet from a workbook to another workbook in different location
Problems pasting values on another workbook sheet on vba
Reference an excel sheet from another workbook without copying the sheet
因此,我在上面的许多链接上都读到,不可能直接引用另一个工作簿中的图纸对象:具体来说,这些链接:https://www.reddit.com/r/excel/comments/akrxxu/vba_referencing_worksheets_by_codename_in/
此链接说,您只能在引用Sheet对象的CodeName属性时才能执行此操作:https://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
不过,Microsoft的此链接向您显示了确切的操作方法:https://docs.microsoft.com/en-us/office/vba/excel/concepts/workbooks-and-worksheets/refer-to-sheets-by-name
我对这个问题的研究足够多了。
让我清楚地说出我的问题。
我有一个打开并运行宏的工作簿。我还打开了许多其他工作簿,尤其是许多源工作簿。1个单一目标工作簿。因此,查看源工作簿,我有很多代码正在获取该文件并打开它。到目前为止,所有这些都可以正常工作。
因此,所有发生问题的地方都分解为几行代码。
Dim objSourceWorkbook
Dim objSourceSheet
Dim strSourceSheetName As String
strSourceSheetName = "Some complicated sheetname" 'I've confirmed the correct file is being open and the sheet name is EXACTLY as assigned to the sheet name.
Dim strSourceWorkbookFilename As String
strSourceWorkbookFilename = getFilenameFromPath(objFile) 'I've also confirmed the filename returned by this function is EXACTLY the same as the objSourceWorkbook.name. So that is working.
Set objSourceWorkbook = Workbooks.Open(Filename:=objFile)
objSourceSheet = objSourceWorkbook.Sheets(strSourceSheetName) 'This didn't work.
所以现在让我向您展示我尝试获取工作表对象的所有其他各种方式:
objSourceSheet = Sheets(strSourceSheetName)
objSourceSheet = objSourceWorkbook.Worksheets(strSourceSheetName)
objSourceSheet = objSourceWorkbook.Worksheet(strSourceSheetName)
objSourceSheet = Workbooks(strSourceWorkbookFilename).Worksheets(strSourceSheetName)
objSourceSheet = Workbooks(strSourceWorkbookFilename).Sheets(strSourceSheetName)
所以我想也许我需要激活我想要获取工作表的工作簿。因此,我进一步尝试了上述每个组合以及下面的Activate组合。
objSourceWorkbook.Activate
Worksheets(strSourceSheetName).Activate
所以总共有18种不同的尝试组合。
在每次尝试中,我都会遇到相同的典型Microsoft无意义的错误:
Run-time error '438': Object doesn't support this property or method
在这一点上,我不知道该如何进行这项工作。我知道我以前遇到过这个问题,并且我记得确实很难解决,但是我能够解决。但是,该代码早已丢失,因为它是十多年前的政府合同。
也许我会尝试将这个问题简化为3个几乎空的工作簿,看看我是否仍然可以重现同样的问题。
有什么想法吗?非常感谢!先感谢您!!欢呼,并保证在那里的人安全!
好吧,我想我找到了问题的根源。
Dim objSourceWorkbook As Workbook
Dim objSourceSheet As Worksheet
Set objSourceSheet = objSourceWorkbook.Worksheets(strSourceSheetName)
首先需要声明“工作簿和工作表”其次,在作业前面使用Set关键字... DUH !!!S额额头上的手
感谢您至少帮助我陈述并清楚地思考我的问题。:-D
以上是关于Excel VBA如何从另一个工作簿中获取工作表对象的主要内容,如果未能解决你的问题,请参考以下文章
excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决
Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选
如何用VBA把一个工作簿中的工作表内容复制到另一个汇总工作簿里面的指定的工作表里面去?