请教VB编程问题
脚本是用于报表记录的,当时间到偶数小时时,调用模板,生成以日期为名称的EXCEL文件,记录数据。目前存在的问题是,不自动生成EXCEL文件,如果我人为建立了一个文件,也不...
脚本是用于报表记录的,当时间到偶数小时时,调用模板,生成以日期为名称的EXCEL文件,记录数据。目前存在的问题是,不自动生成EXCEL文件,如果我人为建立了一个文件,也不对文件进行修改。这是拷贝的别人的程序,因为不懂VB,所以也看不出来有什么问题。请专家帮忙看看。
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
Dim ReportArray As Variant 'Rem 存放日报中所有要显示的参数的数组
Dim FirstPoint1 As Variant 'Rem 第一个变量
Dim tempvar As Variant 'Rem '中间变量
Dim strStartTime, strEndTime 'Rem 报表查询的时间范围
Dim Interval As Variant 'Rem 报表查询的间隔时间
Dim OutReportfile As String 'Rem 输出EXCEL表格的文件名
Dim TemplateName As String 'Rem 这个是日报表模板的文件名
Dim dat, DATH As String
On Error GoTo k1
dat = Date
OutReportfile = dat
DATH = Hour(Now)
If DATH = 0 Then
DATH = 24
OutReportfile = DateAdd("d", -1, Date)
End If
If DATH <> 24 Then
TemplateName = OutReportfile
yy = Dir("d:\唐河首站报表\" & TemplateName & ".xls")
If yy = "" Then
TemplateName = "模板"
End If
Dim WOL1, WOL2 As Integer
WOL1 = (DATH / 2) + 4
Set msExcel = CreateObject("Excel.Application")
With msExcel
.WindowState = xlMinimized
.Visible = False
.Workbooks.Open "d:\唐河首站报表\" & TemplateName & ".xls", , False
.ActiveWorkbook.ActiveSheet.Select
.DisplayAlerts = False
.DisplayAlerts = False
.Wait (Now() + 0.00002)
End With
With msExcel.Worksheets(1)
msExcel.Worksheets(1).Cells(WOL1, 2).Value = Format(readvalue("Fix32.thisnode.TT1104.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 3).Value = Format(readvalue("Fix32.thisnode.TT1105a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 4).Value = Format(readvalue("Fix32.thisnode.TT1105b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 5).Value = Format(readvalue("Fix32.thisnode.TT1106.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 7).Value = Format(readvalue("Fix32.thisnode.TT1201a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 6).Value = Format(readvalue("Fix32.thisnode.TT1201b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 8).Value = Format(readvalue("Fix32.thisnode.TT1107.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 9).Value = Format(readvalue("Fix32.thisnode.PT1104.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 10).Value = Format(readvalue("Fix32.thisnode.PT1105a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 11).Value = Format(readvalue("Fix32.thisnode.PT1105b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 12).Value = Format(readvalue("Fix32.thisnode.PT1106.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 13).Value = Format(readvalue("Fix32.thisnode.PT1107.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 14).Value = Format(readvalue("Fix32.thisnode.PT1108.f_cv"), "0.00")
End With
msExcel.ActiveWorkbook.SaveAs "d:\唐河首站报表\" & OutReportfile & ".xls"
msExcel.Quit
msExcel.DisplayAlerts = True
msExcel.Visible = True
Set msExcel = Nothing
End If
Exit Sub
k1:
End Sub 展开
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
Dim ReportArray As Variant 'Rem 存放日报中所有要显示的参数的数组
Dim FirstPoint1 As Variant 'Rem 第一个变量
Dim tempvar As Variant 'Rem '中间变量
Dim strStartTime, strEndTime 'Rem 报表查询的时间范围
Dim Interval As Variant 'Rem 报表查询的间隔时间
Dim OutReportfile As String 'Rem 输出EXCEL表格的文件名
Dim TemplateName As String 'Rem 这个是日报表模板的文件名
Dim dat, DATH As String
On Error GoTo k1
dat = Date
OutReportfile = dat
DATH = Hour(Now)
If DATH = 0 Then
DATH = 24
OutReportfile = DateAdd("d", -1, Date)
End If
If DATH <> 24 Then
TemplateName = OutReportfile
yy = Dir("d:\唐河首站报表\" & TemplateName & ".xls")
If yy = "" Then
TemplateName = "模板"
End If
Dim WOL1, WOL2 As Integer
WOL1 = (DATH / 2) + 4
Set msExcel = CreateObject("Excel.Application")
With msExcel
.WindowState = xlMinimized
.Visible = False
.Workbooks.Open "d:\唐河首站报表\" & TemplateName & ".xls", , False
.ActiveWorkbook.ActiveSheet.Select
.DisplayAlerts = False
.DisplayAlerts = False
.Wait (Now() + 0.00002)
End With
With msExcel.Worksheets(1)
msExcel.Worksheets(1).Cells(WOL1, 2).Value = Format(readvalue("Fix32.thisnode.TT1104.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 3).Value = Format(readvalue("Fix32.thisnode.TT1105a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 4).Value = Format(readvalue("Fix32.thisnode.TT1105b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 5).Value = Format(readvalue("Fix32.thisnode.TT1106.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 7).Value = Format(readvalue("Fix32.thisnode.TT1201a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 6).Value = Format(readvalue("Fix32.thisnode.TT1201b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 8).Value = Format(readvalue("Fix32.thisnode.TT1107.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 9).Value = Format(readvalue("Fix32.thisnode.PT1104.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 10).Value = Format(readvalue("Fix32.thisnode.PT1105a.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 11).Value = Format(readvalue("Fix32.thisnode.PT1105b.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 12).Value = Format(readvalue("Fix32.thisnode.PT1106.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 13).Value = Format(readvalue("Fix32.thisnode.PT1107.f_cv"), "0.00")
msExcel.Worksheets(1).Cells(WOL1, 14).Value = Format(readvalue("Fix32.thisnode.PT1108.f_cv"), "0.00")
End With
msExcel.ActiveWorkbook.SaveAs "d:\唐河首站报表\" & OutReportfile & ".xls"
msExcel.Quit
msExcel.DisplayAlerts = True
msExcel.Visible = True
Set msExcel = Nothing
End If
Exit Sub
k1:
End Sub 展开
展开全部
脚本没什么大问题,应该能运行。但是不知道你引用脚本的环境有什么问题,所以把
On Error GoTo k1
这一行前面加单引号 -> ' ,阻止程序出错之后直接跳到最后的k1行退出程序,运行一下看VB报什么错。再把报错内容发上来让我看一下。
On Error GoTo k1
这一行前面加单引号 -> ' ,阻止程序出错之后直接跳到最后的k1行退出程序,运行一下看VB报什么错。再把报错内容发上来让我看一下。
更多追问追答
追问
报错信息:运行时错误'1004’:不能设置类Application的WindowState属性。
点“调试”后,黄色指示在“.WindowState = xlMinimized”语句
追答
.WindowState = xlMinimized 这一行前面加单引号
这是让ActiveWindow也就是当前活动窗口最小化,后面Visible = False已经让窗口隐藏了,没有必要最小化,而且窗口没被激活的话会出错。去掉再运行看看。
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
展开全部
你这个第一行,
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
子程序:FixTimer3_OnTimeOut
是如何去调用它的呢?它怎样会被执行?
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
子程序:FixTimer3_OnTimeOut
是如何去调用它的呢?它怎样会被执行?
更多追问追答
追问
在IFIX中用调度,每2个小时执行一下脚本
追答
那么,参数TimerId是什么呢?你的这个过程里也没有使用?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面这行变量申明类型错误,且不规范:
Dim dat, DATH As String
应该改为:
Dim dat as Date, DATH As Integer
Dim dat, DATH As String
应该改为:
Dim dat as Date, DATH As Integer
追问
我不懂VB,这段脚本是复制的别人做的程序。虽然觉得你说的很有道理,但我就是不明白,以前这个脚本在程序里运行的挺正常的,如果存在变量申明类型错误,以前是如何运行的呢。
追答
按照你原来的代码来看,运行应该报错的才对。
原代码dat是不定类型的变量,VB可自适应;但是DATH被定义为String,是无法与整数进行正确比较运算的,不可能得出预期的效果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询