打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB excel 读写 创建图表

    最近用到VB调用EXCEL创建图表,编写程序的过程中遇到一些问题,通过不断的总结终于解决问题。尤其是利用VB打开EXCEL后不能正常关闭有了一定的认识,现在和各位有需求的朋友分享一下自己小小的经验。

    不能正常关闭EXCEL大致有两点,一是打开EXCEL文件后没有释放EXCEL所占用的资源;二是程序中调用EXCEL或读写EXCEL时程序有错;以上两点比较常见,其他的原因目前还没有遇见,也就不多发表意见了。

    正常释放EXCEL资源的语句顺序见示例最后一段程序,我调试过可以正常退出EXCEL。

    通常不能退出EXCEL的问题中,提示的错误信息大多为实时错误 "1004 " 对象'Sheets'的方法 '_global'

失败。

    通常情况下,我们可以通过录制EXCEL宏来实现代码的翻译,但此时要相当小心,在将宏程序移植到自己的程序时一定要注意,那就是在录制的程序的语句前加上EXCEL的类声明,如ActiveChart.ChartType = xlColumnClustered为生成的语句,在调用时一定更新为xlApp.ActiveChart.ChartType = xlColumnClustered,这样可以保证每次成功退出EXCEL。

   还有就是RANGE功能,使用不当也经常引起不能正常退出EXCEL,在利用其选取多个单元格时,其写法应足够小心。如 xlApp.ActiveChart.SetSourceData Source:=xlApp.Sheets("Sheet1").Range("A1:G1"), PlotBy:= _
xlRows,若不加xlApp,会导致第一次可以正常退出,第二次出现异常不能正常退出EXCEL。另外一种写法,如xlApp.Sheets("Sheet1").Range(cells(1,1),cells(20,20)),在这条语句运行后第一次正常,第二次就会引起异常,正确的写法应为xlApp.Sheets("Sheet1").Range(Sheets.cells(1,1),Sheets.cells(20,20)), 按照以上的说明基本上可以正常调用EXCEL文件。

 

     Dim xlApp As Excel.Application '定义EXCEL类
     Dim xlBook As Excel.Workbook '定义工件簿类
     Dim xlsheet As Excel.Worksheet '定义工作表类


Private Sub Command1_Click()
    
     Dim xlBook As Object
     Dim xlsheet As Object
     Dim i, j As Integer
     Dim Filename As String
     CommonDialog.Filter = "All Files|*.*|(*.exe)|*.exe|(*.xls)|*.xls|(*.txt)|*.txt"
     CommonDialog.ShowSave

     Filename = CommonDialog.Filename
   
     Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
     Set xlBook = xlApp.Workbooks.Add
     xlApp.Visible = True '设置EXCEL可见
     Set xlsheet = xlBook.Sheets(1)
         
     xlApp.Range("A1").Value = "11"
     xlApp.Range("B1").Value = "22"
     xlApp.Range("C1").Value = "33"
     xlApp.Range("D1").Value = "33"
     xlApp.Range("E1").Value = "44"
     xlApp.Range("F1").Value = "55"
     xlApp.Range("G1").Value = "44"
   
 
    

    xlApp.Charts.Add
    xlApp.ActiveChart.ChartType = xlColumnClustered
    xlApp.ActiveChart.SetSourceData Source:=xlApp.Sheets("Sheet1").Range("A1:G1"), PlotBy:= _
             xlRows
    xlApp.ActiveChart.Location Where:=xlLocationAsNewSheet
    With xlApp.ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "数据统计图表"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "时间间隔"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "同步次数"
    End With
    With xlApp.ActiveChart.Axes(xlCategory)
        .HasMajorGridlines = True
        .HasMinorGridlines = False
    End With
    With xlApp.ActiveChart.Axes(xlValue)
        .HasMajorGridlines = True
        .HasMinorGridlines = False
    End With
    xlApp.ActiveChart.HasLegend = False
    xlApp.ActiveWindow.Visible = True
   
        xlApp.Charts.Add
    xlApp.ActiveChart.ChartType = xlColumnClustered
    xlApp.ActiveChart.SetSourceData Source:=xlApp.Sheets("Sheet1").Range("A1:J1"), PlotBy:= _
        xlRows
    xlApp.ActiveChart.Location Where:=xlLocationAsNewSheet
    With xlApp.ActiveChart
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
       xlApp.Charts.Add
    xlApp.ActiveChart.ChartType = xlColumnClustered
    xlApp.ActiveChart.SetSourceData Source:=xlApp.Sheets("Sheet1").Range("A1:K1"), PlotBy:= _
        xlRows
    xlApp.ActiveChart.Location Where:=xlLocationAsNewSheet
    With xlApp.ActiveChart
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
        xlApp.Charts.Add
    xlApp.ActiveChart.ChartType = xlColumnClustered
    xlApp.ActiveChart.SetSourceData Source:=xlApp.Sheets("Sheet1").Range("A1:M1"), PlotBy:= _
        xlRows
    xlApp.ActiveChart.Location Where:=xlLocationAsNewSheet
    With xlApp.ActiveChart
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
      
    xlBook.SaveAs Filename '保存工作薄  正确退出EXCEL
    Set xlshee = Nothing
    xlBook.Close  '关闭EXCEL工作簿
    Set xlBook = Nothing
    xlApp.Quit '关闭EXCEL
    Set xlApp = Nothing '释放EXCEL对象

End Sub

 


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
自学资料(Excel VBA)[收集整理6]
vba工作簿工作表操作
VBA: 图表处理
vb生成操作保存提示excel文件
VBS控制Excel的一些常见方法
发送一些示例数据到Excel并建立柱形统计图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服