fengxue007 发表于 2008-6-17 23:57:00

定义excel类型问题

<p>在VBA中定义变量如下:</p><p>&nbsp;&nbsp;&nbsp; Dim xlApp As Excel.Application<br/>&nbsp;&nbsp;&nbsp; Dim xlBook As Excel.Workbook<br/>&nbsp;&nbsp;&nbsp; Dim xlSheet As Excel.Worksheet<br/></p><p>但编译的时候老是说用户定义类型未定义,是怎么回事呢?</p>

robbin840311 发表于 2008-6-18 09:03:00

本帖最后由 作者 于 2008-6-18 10:06:33 编辑 <br /><br /> <p>LZ,请在引用中选择“Microsoft Excel 11.0 object library”,如果没有这一项,请选择相关的microsoft excel library的引用。</p><p>如图:</p><p>&nbsp;</p>

xinglee 发表于 2008-6-18 09:27:00

另外,为适用于不同版本的Excel,建议采用后绑定!

robbin840311 发表于 2008-6-18 10:07:00

<p>同意LS的观点</p>

fengxue007 发表于 2008-6-18 14:01:00

怎么样才能绑定呢

fengxue007 发表于 2008-6-19 09:23:00

<p>在网上找了一些dd,发上来希望对有同样问题的兄弟有所帮助</p><p>两种表示方法:</p><p><font face="Times New Roman">1</font>、先期绑定<font face="Times New Roman">:</font></p><p>引用:<font face="Times New Roman">Microsoft Excel 10.0 Object Library(10.0</font>是<font face="Times New Roman">xp</font>的版本号,<font face="Times New Roman">2000</font>为<font face="Times New Roman">9.0</font>以次类推<font face="Times New Roman">)</font></p><p>声明:</p><p>声明对象:</p><p><font face="Times New Roman">dim xlapp as Excel.Application’</font>声明对象,也可以使用<font face="Times New Roman">dim xlapp as New Excel.Application</font></p><p><font face="Times New Roman">dim xlwb as Excel.Workbook</font></p><p><font face="Times New Roman">dim xlsht as Excel.Worksheet</font></p><p>使用对象</p><p>创建<font face="Times New Roman">excel</font>的新实例的方法</p><p><font face="Times New Roman">set xlapp=new excel.application</font></p><p>如果使用<font face="Times New Roman">dim xlapp as New Excel.Application</font>的声明方法是在第一次引用该变量时将新建该对象的实例,因此不必使用<font face="Times New Roman">
                </font>set 语句来给该对象引用赋值。创建好<font face="Times New Roman">EXCEL</font>实例后就可以使用<font face="Times New Roman">EXCEL</font>的属性、对象、类型、方法了。 </p><p></p><p></p><p>声明触发事件的对象:</p><p><font face="Times New Roman">dim withevents xlapp as Excel.Application</font></p><p>注意声明触发事件的对象只能在类模块里,比如在<font face="Times New Roman">VB</font>里创建的类模块、外接程序设计器等。声明好后就可以使用<font face="Times New Roman">excel</font>事件了,如: </p><p></p><p></p><p><font face="Times New Roman">Private Sub xlapp_NewWorkbook(ByVal Wb As Excel.Workbook)</font></p><p><font face="Times New Roman">’…</font></p><p><font face="Times New Roman">End Sub</font></p><p></p><p><font face="Times New Roman"></font></p><p></p><p><font face="Times New Roman">Private Sub xlapp_WorkbookOpen(ByVal Wb As Excel.Workbook)</font></p><p><font face="Times New Roman">’…</font></p><p><font face="Times New Roman">End Sub</font></p><p></p><p><font face="Times New Roman"></font></p><p></p><p><font face="Times New Roman">2</font>、后期绑定</p><p>引用:不需要</p><p>声明:</p><p>声明对象</p><p><font face="Times New Roman">dim xlapp as object</font></p><p><font face="Times New Roman">dim xlwb as object</font></p><p><font face="Times New Roman">dim xlsht as object</font></p><p>使用对象:</p><p><font face="Times New Roman">set xlapp=getobject(,”Excel.Application”)’</font>获得一个已经存在的<font face="Times New Roman">EXCEL</font>实例</p><p><font face="Times New Roman">set xlapp=createobject(“Excel.Application”)’</font>创建一个新的<font face="Times New Roman">EXCEL</font>实例<font face="Times New Roman">”</font></p><p>然后就可以使用<font face="Times New Roman">EXCEL</font>了。</p><p>后期绑定不能声明触发事件的<font face="Times New Roman">EXCEL</font>对象实例。</p><p>后期绑定不能直接使用<font face="Times New Roman">EXCEL</font>的常数、对象、以及对象属性,需要声明后才能正常使用,这点需要仔细注意。</p><p><font face="Times New Roman">3</font>、变量的声明范围:</p><p>声明范围可以是<font face="Times New Roman">public </font>也可以是<font face="Times New Roman"> Private</font>。就看使用范围了。</p><p auto=""><font face="宋体">4、混合使用: <p></p></font></p><p></p><p></p><p auto=""><font face="宋体">使用 <code>As Object</code> 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行。要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID。例如,可以声明并创建下列 Microsoft Excel 引用: <p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Dim xlApp As Excel.Application </code><p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Dim xlBook As Excel.Workbook</code>
                        <p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Dim xlSheet As Excel.WorkSheet</code>
                        <p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Set xlApp = CreateObject("Excel.Application")</code>
                        <p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Set xlBook = xlApp.Workbooks.Add</code>
                        <p></p></font></p><p></p><p></p><p auto=""><font face="宋体"><code>Set xlSheet = xlBook.Worksheets(1)</code>
                        <p></p></font></p><p></p><p></p><p auto=""><font face="宋体">前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。 <p></p></font></p><p></p><p></p><p auto=""><font face="宋体">5、开发帮助 <p></p></font></p><p></p><p></p><p auto=""><font face="宋体">如果是前期绑定,尽量在低版本的EXCEL上开发,否则在低版本的环境下运行会出现一些不可预见的问题。 <p>Private xlApp As Excel.Application '可以在模块或类模块里声明 </p><p>Private xlWb As Excel.Workbook'可以在模块或类模块里声明 </p><p>Private xlShtA As Excel.Worksheet'可以在模块或类模块里声明 </p><p>Private WithEvents exlEvent As Excel.Application'只能在类模块里声明</p><p>public xlApp as new GetObject(, "Excel.Application")'错误的声明方式 </p><p>public xlWb as new xlApp.ActiveWorkbook'错误的声明方式 </p><p>pubic xlShtA as new xlWb.ActiveSheet '错误的声明方式</p></font></p><p>Private xlApp As Excel.Application '可以在模块或类模块里声明 </p><p>Private xlWb As Excel.Workbook'可以在模块或类模块里声明 </p><p>Private xlShtA As Excel.Worksheet'可以在模块或类模块里声明 </p><p>Private WithEvents exlEvent As Excel.Application'只能在类模块里声明</p><p>public xlApp as new GetObject(, "Excel.Application")'错误的声明方式 </p><p>public xlWb as new xlApp.ActiveWorkbook'错误的声明方式 </p><p>pubic xlShtA as new xlWb.ActiveSheet '错误的声明方式</p>
页: [1]
查看完整版本: 定义excel类型问题