日期:2023年7月3日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006

文章目录
- 一、前言
- 二、COM技术浅谈
- 三、通过COM操作Excel
- (3-1)引用 Microsoft Excel Object Library 库
- (3-2)创建、操作以及销毁 三部曲
 
- 四、常见问题的处理方案
- (4-1)引用中找不到Excel库的解决方案
- (4-2)只有WPS Excel的电脑运行程序报错的解决方案
- (4-3)程序运行很卡,CPU资源占用很高的解决方案
 
一、前言
近期帮一个客户做了一个预处理Excel的小工具,就想着总结一下关于 VB6 操作 Excel 的知识。本期主要讲解如何快速去使用 COM(Component Object Model)技术来操作Excel,并且学习一些主要的知识与概念等等,快速构建一套使用该技术的思维习惯。
二、COM技术浅谈
COM(Component Object Model)是一种微软的组件技术,用于在不同的应用程序之间进行通信和交互,其核心概念是将功能独立的代码封装为组件,每个组件具有自己的接口和实现。组件可以被其他应用程序通过 COM 接口调用和使用,实现了组件的复用和跨应用程序的互操作性。
Excel COM 组件是一种用于与 Microsoft Excel 进行交互的组件(现在也可以和新版的 WPS Excel 进行交互)。通过使用 Excel COM 组件,可以通过编程方式自动化 Excel 应用程序,执行各种任务,例如创建、读取、修改和保存 Excel 工作簿、操作工作表、单元格和公式,以及生成报表等。
三、通过COM操作Excel
要使用 Excel COM 组件,我们需要在开发环境中引用 Microsoft Excel Object Library。。在以前电脑必须安装 MS Excel,才可以使用此库;经过测试,现在电脑只安装新版本的 WPS Excel,也一样可以使用此库。
(3-1)引用 Microsoft Excel Object Library 库

(3-2)创建、操作以及销毁 三部曲
- 创建 Excel COM组件;
- 各种想要的操作,如读值、赋值等操作;
- 销毁创建的 Excel COM组件;
主要的 Excel COM 如下所示:
| Excel COM | 说明 | 
|---|---|
| Excel.Application | Excel应用程序的实例 | 
| Excel.Workbook | Excel应用程序中的一个工作簿(Workbook) | 
| Excel.Sheets | Excel工作簿中所有的工作表(Worksheet) | 
| Excel.Worksheet | Excel工作簿(Workbook)中的一个工作表 | 
示例如下:
 
Option Explicit
Private Sub Form_Load()
On Error Resume Next
    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:前期绑定,实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:后期绑定,实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets
    '(2)操作
    xlApp.Visible = False        'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False 'Excel 应用程序的屏幕更新控制
    
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    ' 读取单元格的值
    Debug.Print xlSheet.Range("A2").value, xlSheet.Range("B2").value
    ' 写入单元格的值
    xlSheet.Range("A3").value = "李小龙"
    Debug.Print xlSheet.Cells(3, 1).value
    
    xlApp.ScreenUpdating = True
    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub
补充一点,如果想要更好的兼容性,那么最后生成 exe 的时候,将 Excel COM 全部定义为 object,采用后期绑定的方式,这样就不用纠结 Excel 版本的问题;
四、常见问题的处理方案
(4-1)引用中找不到Excel库的解决方案
如果在引用中找不到Microsoft Excel Object Library库,那么就点选“浏览(B)…”,选择安装的Excel程序,以下以 MS Excel 作为演示:
-  点击 WIN键,然后输入excel,点选 打开文件位置
  
-  右键 Excel,点选 打开文件位置
  
-  按住 ctrl,接着右键点选 复制文件地址(A)
  
-  将地址填入,点击 打开(O) 
  
(4-2)只有WPS Excel的电脑运行程序报错的解决方案

 对于上图所示的报错,如果不想安装 MS Excel,那么也可以安装更高版本的 WPS Excel,经过不同电脑测试,此方案可以很完美的解决此问题。
(4-3)程序运行很卡,CPU资源占用很高的解决方案

如果运行挺久才得到结果,期间CPU可能高达50%,而其它电脑又是正常速度的,那么此类问题的解决方案同(4-2)一致,更新 Excel 应该就可以解决了。
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/130256762



















