vbs函数读取excel中的数据,存储到dictionary并返回。在外部用dictionary变量操作数据。

现在我的问题是,当我把数据存到dictionary或list中以后,在外部不能获取其数据,代码如下:
Dim ret
set ret= getExecuteFlowFromExcel("C:\国航框架\业务项数据文件\ACE自动化测试数据管理框架.xls","业务集")
'msgbox ret.count
For i=0 To ret.count-1
msgbox ret.item(i)
Next

Function getExecuteFlowFromExcel(ByVal exclPath,ByVal sheetName)
Dim objExcel,objExcelBook,objExcelSheet,dicRetContainer
Dim intTotalRow,intTotalCol

Set objExcel=CreateObject("excel.application")'定义excel对象
objExcel.Visible=False
objExcel.DisplayAlerts = False
Set objExcelBook=objExcel.Workbooks.Open(exclPath)'获取excel,实例化
Set objExcelSheet=objExcelBook.Sheets(sheetName) '获取sheet

intTotalRow=objExcelSheet.usedRange.Rows.Count '获取当前sheet的总行数,包含空行
intTotalCol=objExcelSheet.usedRange.Columns.Count '获取当前sheet的总列数,包含空行

myRow=1'从excel第一行开始遍历
myColumn=1

' Set dicRetContainer=CreateObject("scripting.dictionary")'初始化返回字典对象容器
Set dicRetContainer=CreateObject("system.collections.arraylist")

For myRow=1 to intTotalRow
For myColumn=1 to intTotalCol
If objExcelSheet.cells(myRow,myColumn)="y" Then '如果发现为y
moveNextCol=1
While objExcelSheet.cells(myRow,moveNextCol)<>"" '如果发现当前行不为空
dicRetContainer.add(objExcelSheet.cells(myRow,moveNextCol))
moveNextCol=moveNextCol+1 '当前列往后移
Wend
End if
Next
next

objExcelBook.Close
objExcel.Quit
set objExcel=nothing
set getExecuteFlowFromExcel=dicRetContainer
end function

Dim objExcel,objExcelBook,objExcelSheet,dicRetContainer

写在函数里面 ,只能在函数里面处理
需要在函数外面处理的,
把Dim objExcel,objExcelBook,objExcelSheet,dicRetContainer

写在函数外面
如果还不行,就要检查函数模块是不是公共模块了追问

缺少对象
Line (8): "msgbox dicRetContainer.item(i)".

不行,即使用全局也不行,除非是把这两个语句去掉
objExcelBook.Close
objExcel.Quit
我不理解的是,我已经把数据放到dictionary/list里面了,为什么在这个excel关闭以后这些数据就会没了。作用域应该是不一样的啊。

追答

你在哪个excel编程的 dictionary/list 在excel关闭后 内存就销毁了

所以你永远得不到数据
你可以建立一个临时的excel,ini,text 等类似的文件来存储数据

温馨提示:内容为网友见解,仅供参考
无其他回答

vbs函数读取excel中的数据,存储到dictionary并返回。在外部用dictionary...
写在函数里面 ,只能在函数里面处理 需要在函数外面处理的,把Dim objExcel,objExcelBook,objExcelSheet,dicRetContainer 写在函数外面 如果还不行,就要检查函数模块是不是公共模块了

VBS 怎么判断4个数中,有三个一样,或是有两个一样,或是各不相同?
例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来"接"住InputBox的返回值--就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用","分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg="请输入你的名字:", ...

100 个常见的 PHP 面试题和答案分享
最常见和常用的方法是将数据转换为 Excel 支持的格式。例如,可以编写 .csv 文件,例如选择逗号作为字段之间的分隔符,然后使用 Excel 打开文件。file_get_contents() 可读取文件并将其存储到字符串变量中。为了连接到 MySQL 数据库,必须使用 mysql_connect() 函数。mysql_pconnect() 函数确保与数据库的持久连接,这...

怎么用VBS写一个判断大小的程序?(谢谢您的回答)
例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来"接"住InputBox的返回值--就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用","分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg="请输入你的名字:", ...

相似回答