程序有几处不懂,请帮忙注释一下,谢谢

‘先定义变量
Dim objExcelApp,objExcelBook,objExcelSheet 
Dim tagyali1,tagyali2,tagyali3,tagyali4 
Dim tagliuliang1,tagliuliang2
Dim tago2 
Dim tagshijian,sheetname 
Dim i,j 
Dim msg 

‘声明
Set tagyali1=HMIRuntime.Tags("MicroWin.fuyang.v.p1") 
Set tagyali2=HMIRuntime.Tags("MicroWin.fuyang.v.p2") 
Set tagyali3=HMIRuntime.Tags("MicroWin.fuyang.v.p3") 
Set tagyali4=HMIRuntime.Tags("MicroWin.fuyang.v.p4") 
Set tagliuliang1=HMIRuntime.Tags("MicroWin.fuyang.v.l1") 
Set tagliuliang2=HMIRuntime.Tags("MicroWin.fuyang.v.lt2") 
Set tago2=HMIRuntime.Tags("MicroWin.fuyang.v.o2")
msg="ok" 
sheetname="sheet1" 

‘判断是否打开了模版,如果打开先关闭保存
On Error Resume Next 
Dim ExcelApp,ExcelBook 
Set ExcelApp=GetObject(,"Excel.Application") 
If TypeName(ExcelApp)="Application" Then 
For Each ExcelBook In ExcelApp.WorkBooks 
If ExcelBook.FullName="E:\biao.xls" Then 
ExcelApp.ActiveWorkbook.Save 
ExcelApp.Workbooks.Close 
ExcelApp.Quit 
Set ExcelApp=Nothing
Exit For 
End If 
Next 
End If 

‘创建对象
Set objExcelApp=CreateObject("Excel.Application") 
open file 
objExcelApp.Visible=True 
objExcelApp.Workbooks.Open"E:\biao.xls" 
objExcelApp.Worksheets(sheetname).Activate 

‘清除模版数据
With objExcelApp.Worksheets(sheetname) 
For i=5 To 25 
For j=1 To 8 
.cells(i,j)=Null 
Next 
Next 
For i=26 To 26 
For j=1 To 7 
.cells(i,j)=Null 
Next 
Next 
End With 

‘实时数据写入
tagshijian=Now 
objExcelApp.Worksheets(sheetname).cells(2,2).value=tagshijian 
For i=5 To 25 
with objExcelApp.Worksheets(sheetname) 
.cell(i,1).value=tagshijian 
tagyali1.Read 
.cell(i,2).value=tagyali1.value
tagyali2.Read 
.cell(i,3).value=tagyali2.value 
tagyali3.Read 
.cell(i,4).value=tagyali3.value 
tagyali4.Read 
.cell(i,5).value=tagyali4.value 
tagliuliang1.Read 
.cell(i,6).value=tagliuliang1.value 
tagliuliang2.Read 
.cell(i,7).value=tagliuliang2.value 
tago2.Read 
.cell(i,8).value=tago2.value 
End With 
Next 
MsgBox msg 
‘关闭保存
Dim patch,filename 
filename=CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now))&CStr(Minute(Now)) 
patch="E:\"&filename&".xls" 
objExcelApp.ActiveWorkbook.SaveAs patch 
objExcelApp.Workbooks.Close 
objExcelApp.Quit 
Set objExcelApp=Nothing
请问:
objExcelApp.Worksheets(sheetname).Activate 这一行语句有什么用?前边一行语句不是已经打开表格了吗?这这一行语句不要行不行?

最佳答案

Excel打开之后其实是一个工作薄(Workbook),里面有三个表。
一般只用一张表就够了,而且默认的活动表就是表1(sheet1)。
objExcelApp.Worksheets(sheetname).Activate就是把表一置为活动表格,数据就写在这里。
如果你只用这一张表,此工作薄的另两张不用,那么加不加这句都行,打开excel直接就是第一张表示活动的。
如果其中有切换,要向第二张地三张写数,那就要重新赋值sheetname了。

提问者对于答案的评价:
谢谢,原来是这样.

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc263794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐