返回首页
当前位置: 主页 > Excel教程 > Excel2010教程 >

如何确保Excel文件可迁移性的注意事项

时间:2014-04-30 23:20来源:Office教程学习网 www.office68.com编辑:麦田守望者

在编辑Excel文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。

1.声明每一个VBA变量

预先声明每个VBA的变量。对方的Excel选项也许勾选了「要求变量申明」,你没声明变量在你这里运行没问题,到对方那边就会出错。另外,预先声明变量,是一种良好的编程习惯,可防止失误。

为防止忘记声明变量,可主动勾选VBA选项中的「要求变量申明」,或者在每个VBA模块和类模块前面都写上Option Explicit

2.注意数据库的连接字符串

在Excel表格中使用外部数据源或者VBA中操作数据库时,连接字符串有多个写法。通过ODBC连接数据库相对比较简单,但损害了Excel文件的可迁移性,因为对方电脑上很可能没有事先定义ODBC数据源。 所以,尽量使用下面第二种方法。

' 使用DSN(ODBC)连接数据库的连接字符串,需对方机器同时配置ODBC
Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;

' 使用IP直接连接数据库的连接字符串,无需对方机器配置ODBC
driver={SQL Server};server=ip;uid=username;pwd=password;

3.避免引用dll

比如写一段调用Outlook发送邮件的VBA代码,我可以先引用「Microsoft Office 12.0 Object Library」,然后在代码中声明对象:

dim xOutlook as New Outlook.Application

但这样做有一个缺陷。对方的Office版本可能与你的不一致,从而不存在你所引用的这个问题,从而导致一连串错误。 解决问题的办法是,尽量不直接引用dll文件,变量声明为Object对象,并通过CreateObjectGetObject来生成或获取对象。

dim xOutlook as Object

Set xOutlook = GetObject(, "Outlook.Application")

这种方法相对于直接声明Outlook.Application对象有一个稍微麻烦的地方,xOutlook的方法和成员不会自动完成。所以,我编写该类程序时,一般都是先申明为实际对象Outlook.Application,写完程序后再把Outlook.Appilcation改成Object

上面Outlook只是一个例子。其它还有Word、数据裤ADODB.Connection等对象都应注意使用该法则。

4.避免引用外部文件

Excel可以引用其它Excel文件里的数据。但它有一个缺陷,Excel在引用外部文件时使用绝对路径。这样假设A文件引用相同目录下的文件B,那么即使你把A、B两个文件都发给对方,对方在打开A文件时也可能出错。

避免该问题的方法就是避免引用外部文件,比如特殊复制粘贴去掉公式,或者把外部数据表复制到主文件直接引用等等。如果迫不得已使用外部文件,那只能让对方到「数据->编辑链接」一栏重设链接文件的位置。

5.注意Office版本差异

Office各个版本有一些差异,功能也不完全一样。 尤其要注意的是各版本的函数不一样。比如Office 2003里就没有Office 2007的IfError函数。如果已知对方的Office版本有差异,一定要注意这些函数上的差异。

比如AVERAGEIF, AVERAGEIFS, CUBEKPIMEMBER, CUBEMEMBER, CUBEMEMBERPROPERTY, CUBERANKEDMEMBER, CUBESET, CUBESETCOUNT, CUBEVALUE, COUNTIFS, IFERRORSUMIFS这些函数都是从Office 2007才引入的。

当然这点也可以无视。Office 2003是应该扔到垃圾堆了。

------分隔线----------------------------
标签(Tag):excel excel2007 excel2010 excel2013 excel2003 excel技巧 excel教程 excel实例教程
------分隔线----------------------------
推荐内容
猜你感兴趣