(setq wb (vlax-invoke-method wbs "open" excelFile))实参太少???
(setq wb (vlax-invoke-method wbs "open"excelFile))实参太少???
有没有哪位大神能帮忙看一下具体是哪里出了问题,代码如下:
;;;读取EXCEL某列数据
;;;
(setq line_read "A")
(defun xls_read ()
(vl-load-com)
(setq excelFile (getfiled "\请选择Excel文件:" "" "xlsx" 8))
(setq xl (vlax-get-or-create-object "Excel.Application"))
(setq wbs (vlax-get-property xl "WorkBooks"))
(setq wb (vlax-invoke-method wbs "open"excelFile))
(setq shs (vlax-get-property wb "Sheets"))
(setq sheet_1 (vlax-get-property shs "Item" "Sheet1"))
(setq Msg '())
(setq n 1)
(while (> n 0)
(setq RangeStr (strcat line_read (itoa n)))
(setq Cell_A (vlax-get-property sheet_1 "Range" RangeStr))
(setq Cell_A_value (vlax-get-property Cell_A 'Value))
(setq UnitValue (Vlax-variant value Cell_A_value))
(setq Msg (cons UnitValue Msg))
(if (not UnitValue)
(setq n -1)
(setq n (+ n 1))
)
)
(setq Msg (reverse (cdr Msg)))
(princ Msg)
(vlax-invoke-method wb "Close")
(vlax-invoke-method xl "Quit")
(vlax-release-object xl)
)
本帖最后由 yshf 于 2022-6-8 22:38 编辑
将(setq wb (vlax-invoke-method wbs "open"excelFile))
改为 (setq wb (vlax-invoke wbs "open"excelFile))试试
查看Excel VBA帮助
Excel 开发人员参考
Workbooks.Open 方法
打开一个工作簿。语法
表达式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)表达式 一个代表 Workbooks 对象的变量。
参数
名称必选/可选数据类型描述
CorruptLoad可选VariantString 类型。要打开的工作簿的文件名。
UpdateLinks可选Variant指定更新文件中链接的方式。如果省略此参数,则提示用户指定链接的更新方式。有关此参数值的详细信息,请参阅“备注”部分。如果 Microsoft Excel 正在打开 WKS、WK1 或 WK3 格式的文件并且 UpdateLinks 参数为 2,则 Microsoft Excel 根据与该文件关联的图形生成图表。如果此参数为 0,则不创建任何图表。
ReadOnly可选Variant如果为 True,则以只读模式打开工作簿。
Format可选Variant如果 Microsoft Excel 正在打开文本文件,则由此参数指定分隔符。如果省略此参数,则使用当前的分隔符。有关此参数值的详细信息,请参阅“备注”部分。
Password可选Variant一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
WriteResPassword可选Variant一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
IgnoreReadOnlyRecommended可选Variant如果为 True,则不让 Microsoft Excel 显示只读的建议消息(如果该工作簿以“建议只读”选项保存)。
Origin可选Variant如果该文件为文本文件,则此参数用于指示该文件来源于何种操作系统(以便正确映射代码页和回车/换行符 (CR/LF))。可为以下 XlPlatform 常量之一:xlMacintosh、xlWindows 或 xlMSDOS。如果省略此参数,则使用当前操作系统。
Delimiter可选Variant如果该文件为文本文件并且 Format 参数为 6,则此参数是一个字符串,指定用作分隔符的字符。例如,可使用 Chr(9) 代表制表符,使用“,”代表逗号,使用“;”代表分号,或者使用自定义字符。只使用字符串的第一个字符。
Editable可选Variant如果文件为 Microsoft Excel 4.0 加载宏,则此参数为 True 时可打开该加载宏以使其在窗口中可见。如果此参数为 False 或被省略,则以隐藏方式打开加载宏,并且无法设为可见。本选项不能应用于由 Microsoft Excel 5.0 或更高版本的 Microsoft Excel 创建的加载宏。如果文件是 Excel 模板,则参数值为 True 时,会打开指定模板进行编辑。参数值为 False 时,可根据指定模板打开新的工作簿。默认值为 False。
Notify可选Variant当文件不能以可读写模式打开时,如果此参数为 True,则可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,并在文件可用时向用户发出通知。如果此参数为 False 或被省略,则不请求任何通知,并且不能打开任何不可用的文件。
Converter可选Variant打开文件时试用的第一个文件转换器的索引。首先试用的是指定的文件转换器;如果该转换器不能识别此文件,则试用所有其他转换器。转换器索引由 FileConverters 属性返回的转换器行号组成。
AddToMru可选Variant如果为 True,则将该工作簿添加到最近使用的文件列表中。默认值为 False。
Local可选Variant如果为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果为 False(默认值),则以 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 的语言保存文件,其中 Visual Basic for Applications (VBA) 通常为美国英语版本,除非从中运行 Workbooks.Open 的 VBA 项目是旧的已国际化的 XL5/95 VBA 项目。
CorruptLoad可选Variant可为以下常量之一:xlNormalLoad、xlRepairFile 和 xlExtractData。如果未指定任何值,则默认行为通常为普通加载,但如果 Excel 已尝试打开该文件,则可以是安全加载或数据恢复状态。首先尝试普通加载。如果 Excel 在打开文件时停止操作,则尝试安全加载状态。如果 Excel 再次停止操作,则尝试数据恢复状态。
返回值
一个代表打开的工作簿的 Workbook 对象。
说明
默认情况下,以编程方式打开文件时将启用宏。使用 AutomationSecurity 属性可设置以编程方式打开文件时所用的宏安全模式。
您可在 UpdateLinks 参数中指定下面的一个值,以确定文件的分隔字符:
值含义
1用户指定链接更新方式
2从不在该工作簿打开时更新链接
3始终在该工作簿打开时更新链接
您可在 Format 参数中指定下面的一个值,以确定文件的分隔字符:
值分隔符
1标签
2逗号
3空格
4分号
5无
6自定义字符(请参阅 Delimiter 参数)
yshf 发表于 2022-6-8 22:29
将(setq wb (vlax-invoke-method wbs "open"excelFile))
改为 (setq wb (vlax-invoke wbs "open"exce ...
那一行的问题解决了,非常感谢
页:
[1]