早期绑定是指在编译时已知对象的类型。我们在声明变量时指定具体类型:
Dim app As New Excel.Application ' 早期绑定
优点:
晚期绑定是在运行时确定对象的类型。通常通过Object使用:
Dim app As Object Set app = CreateObject("Excel.Application") app.Visible = True
优点:
晚期绑定的缺点:
使用晚期绑定处理COM对象总是有意义吗?
回答: 不,只在你不确定所有目标计算机上都存在所需版本的库时。如果版本控制安全且所有依赖项都已知——早期绑定更快,更可靠,更可取。不必要地使用晚期绑定会降低性能并影响静态类型化的工作。
故事
通过Excel自动化报告:由于晚期绑定,在客户处发现方法名称错误,当宏"崩溃"时(
app.WorkbooksOpen中的拼写错误,而不是app.Workbooks.Open)。如果使用早期绑定,错误会立即显现。
故事
在从旧版本库迁移到新版本库时,应用程序开始抛出异常——新字段不被支持。早期绑定阻止了更新;不得不转向晚期绑定,但由于函数签名不匹配,某些功能停止工作。
故事
完成的库交付到生产环境,但忘记了所需的COM依赖项。在早期绑定情况下,项目根本无法启动(注册错误),而在晚期绑定情况下——工作,但在每次调用对象时"崩溃",需要额外的日志。