loading ...
loading...

2008-07-22 | 一天的努力成果,虽然很累,但值!

分享
 

后记:经过一天的不懈努力,终于调好了,也算是功德圆满。

 

 

 

Option Base 1  '就是因为少了这么一句,数组第一行对应的是(0,i),第一列对应的是(i,0),于是保存到excel后,第一行第一列全是空值

Dim recordnumber As Integer  '因为在该窗体的两个过程中都用到了recordnumber,而且是同一变量,所以,有必要在窗体层声明该变量,否则,无法实现保存到dat功能(该过程中recordnumber还是0呢)

Dim DataArray() As Variant  '因为各个数据的长度并不统一,所以暂时全部定为变体类型

 

Private Sub MENU_OPEN_Click()   ‘有种预感,似乎这个打开Excel文件是在上面的绘制曲线的窗体下进行的?

    Dim I As Integer

Dim FileName As String

Dim DataArray() As single  ‘这一行是我自己加上去的,定义一个动态数组

    Excel_CommonDialog.FileName = ""   ‘这里建立了一个打开文件的对话框。之后就要涉及到建立Excel表格并链接,需要补充一些知识

    Excel_CommonDialog.Filter = "数据文件|*.dat"  ‘课本第325页最下面的标注,表明显示的文件类型,显示数据类型的文件

    Excel_CommonDialog.ShowOpen   ‘TB 第322页,需要新建一个打开文件的对话框

    FileName = Excel_CommonDialog.FileName

    If FileName = "" Then

        MsgBox "不能打开数据文件"

        Exit Sub

    End If

    Open FileName For Binary As #1

    RecordNumber = LOF(1) / 16   ‘这里做了修改,见程序“D:\课题相关\Excel\excel部分调试”

    For I = 1 To RecordNumber  ‘这里做了修改,见程序“D:\课题相关\Excel\excel部分调试”

 

        Get #1, , DataArray(I, 1)  ‘到这里竟然提示没有定义这个变量,难道需要补充定义?读操作。

        Get #1, , DataArray(I, 2)   ‘I 在前面定义了,是个整数。

        Get #1, , DataArray(I, 3)

        Get #1, , DataArray(I, 4)

    Next I

End Sub

 

 

Private Sub MENU_OPEN_Excel_Click()  涉及excel的部分暂时留下,估计是在绘制曲线窗口设计的。

    Dim I As Integer

    Dim FileName As String

    Dim x1App As Excel.Application

    Dim x1Book As Excel.Workbook

    Dim x1Sheet As Excel.Worksheet

    Excel_CommonDialog.Filter = "Excel文件|*.xls"

    Excel_CommonDialog.FileName = ""

    Excel_CommonDialog.ShowOpen  ‘第一,添加CommonDialog控件;第二,在属性窗口设置其默认打开路径,即InitDir属性;第三,记得修改一下name属性为此处的Excel_CommonDialog

    FileName = Excel_CommonDialog.FileName

    If FileName = "" Then   ‘意思是如果没有选择打开的文件名,则退出该过程

        Exit Sub

    End If

    Set x1App = CreateObject("Excel.Application")   '创建excel应用程序,打开excel

x1App.Visible = True  '如果没有这条命令,就无法看见打开的excel文件,而且这一行必须放在上面那行之后。只有先用set打开了excel程序,才能继而设置其可见性。   

Set x1Book = x1App.Workbooks.Open(FileName) '创建工作簿(工作薄在excel下建立)

    Set x1Sheet = x1Book.Worksheets(1) '打开Excel工作表或叫创建工作表(工作表又在工作薄workbooks下建立,一层一层的)

    x1Sheet.Activate '激活工作表  这一行作用是干吗的,还没发现,有没有感觉没什么用

    RecordNumber = x1Sheet.Cells(2, 9)   ‘专门留了一个单元格用来填写记录数据。

    For I = 1 To RecordNumber

        DataArray(I, 1) = x1Sheet.Cells(I + 1, 1)

        DataArray(I, 2) = x1Sheet.Cells(I + 1, 2)

        DataArray(I, 3) = x1Sheet.Cells(I + 1, 3)

        DataArray(I, 4) = x1Sheet.Cells(I + 1, 4)

    Next I

    'xlBook.RunAutoMacros (x1AutoClose)  ‘‘运行Excel关闭宏

    x1App.Quit '关闭Excel

    Set x1App = Nothing

End Sub

Private Sub MENU_SAVE_Click()

    Dim I As Integer

    Dim FileName As String

    Excel_CommonDialog.Filter = "数据文件|*.dat"

    Excel_CommonDialog.FileName = "data1.dat"

    Excel_CommonDialog.ShowSave

    FileName = Excel_CommonDialog.FileName  ‘属性名

    Open FileName For Binary As #1

    For I = 1 To RecordNumber   '因为在多个过程中都用到了recordnumber,而且是同一变量,所以,有必要在窗体层(或者标准模块层)声明该变量,否则,无法实现保存到dat功能(该过程中recordnumber还是0呢,并未继承前一过程的recordnumber值)

        Put #1, , DataArray(I, 1)  ‘写操作。后面有程序为这些数组赋值的。

        Put #1, , DataArray(I, 2)

        Put #1, , DataArray(I, 3)

        Put #1, , DataArray(I, 4)

    Next I

    Close #1

End Sub

 

Private Sub MENU_SAVE_Excel_Click()

    '在通用对象的声明过程中定义Excel对象

    Dim I As Integer

    Dim ex As Object '定义Excel类

    Dim exWbook As Object '定义工作簿类

    Dim exSheet As Object '定义工作表类    ‘这三个定义应该是定义在标准模块中,见论文39页

    Dim FileName As String

    Excel_CommonDialog.Filter = "Excel表|*.xls"

    Excel_CommonDialog.FileName = ""

    Excel_CommonDialog.ShowSave

    FileName = Excel_CommonDialog.FileName

    If FileName = "" Then

        Exit Sub

    End If

    On Error Resume Next

    Set ex = CreateObject(App.Path, "Excel.Application") '创建Excel对象

    If Err Then

        Err.Clear

        Set ex = CreateObject("Excel.Application") '创建Excel对象

        If Err Then

            Exit Sub

        End If

    End If

    ex.Visible = True '设置Application对象使Excel可见

    Set exWbook = ex.Workbooks().Add '创建一个新的WorkBook

    Set exSheet = exWbook.Worksheets("sheet1") '设置活动工作表,三个set是依次递进的关系

    exSheet.Activate '激活工作表

    ex.Range("A1:D1").Value = Array("流量计", "出口压力", "进口压力", "功率参数")  ‘range表示单元格。这里共有四项统计数据,这和前面的

    'ex.Cells(1, 1).Value = "This is column A, row 1" ‘这个单元格的赋值其实是可有可无的。

    exSheet.Cells(1, 9) = "数据总数"

    exSheet.Cells(2, 9) = RecordNumber

    exSheet.Range("A2").Resize(1000, 4).Value = DataArray '‘这里做了修改,见程序“D:\课题相关\Excel\excel部分调试”将数据传输到WorkSheet。将前面保存的数据文件保存到这样的excel文件里  带着一连串的操作,就可以保存。关键就是这行怎么理解,不太明白,所以出现问题也不知道怎么调整(其余功能基本上都可以实现了)

    exSheet.SaveAs FileName

    'exWbook.SaveAs "E:\课题\试验记录"

End Sub   ‘涉及excel的部分暂时留下,估计是在绘制曲线窗口设计的。

 

分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  类别 (好好学习) |  发表于 21:44
搜狐博客温馨提示:搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  *中国人爱国心,搜狗输入法爱国主题皮肤下载>>
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复