我想实现使用excel记录wincc变量数据的功能,每次打开excel后在新的一行相同列里写入数据,即不能覆盖原有数据。下面这个程序只能每次把变量写在第一行,不能实现写入下一行的功能,请问如何修改?
Dim objExcelApp
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False 'True
objExcelApp.Workbooks.Open "d:\ExcelExample.xls"
objExcelApp.Cells(1, 1).Value = ScreenItems("tag1").OutputValue
objExcelApp.Cells(1, 2).Value = ScreenItems("tag2").OutputValue
objExcelApp.Cells(1, 3).Value = ScreenItems("tag3").OutputValue
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
问题补充:
谢谢大家的帮助,我用的dcount107的方法已经解决了,城外之人的办法也不错。只是我运行程序时发现一个问题,这个ExcelExample.xls文档需要事先在d盘建立,如果没有建立的话,运行时会报错,说没有找到这个文档,请问如果我想让程序自己建立excel文档的话如何解决?
最佳答案
呵呵,在开始写数时首先要获取第一列空行iBlankLine,然后再进行写入操作
Dim objExcelApp,oWorkBook
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False 'True
Set oWorkBook = objExcelApp.Workbooks.Open("d:\AA.xls")
Dim iBlankLine
iBlankLine = oWorkBook.ActiveSheet.Columns(1).Find("").Row '查找第一列的空行
'MsgBox iBlankLine
objExcelApp.Cells(iBlankLine, 1).Value = ScreenItems("tag1").OutputValue
objExcelApp.Cells(iBlankLine, 2).Value = ScreenItems("tag2").OutputValue
objExcelApp.Cells(iBlankLine, 3).Value = ScreenItems("tag3").OutputValue
oWorkBook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = nothing
补充:Set oWorkBook = objExcelApp.Workbooks.Add
oWorkBook.SaveAs "D:\ExcelExample.xls"
即可新建。但这不是完美的解决方法,通过fso组件首先判断这个文件是否存在再决定打开还是创建。fso的代码很多,自己搜索吧!
提问者对于答案的评价:
谢谢,已经解决!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc276658.html