ry200w 发表于 2007-8-12 10:30

[求助] 从access中导出excel系统提示编译错误:用户定义类型为定义。把代码发一下

<P>Option Compare Database<BR>Option Explicit<BR>Public MyXL As Object<BR><FONT style="BACKGROUND-COLOR: #ccff00">Sub GetExcel()<BR></FONT>'使用这段代码,可以打开一个Excel实例或者引用已经打开的Excel实例<BR>    Const ERR_APP_NOTRUNNING As Long = 429<BR>    On Error Resume Next<BR>    Set MyXL = GetObject("Excel.Application")<BR>    If Err = ERR_APP_NOTRUNNING Then<BR>        Set MyXL = <FONT style="BACKGROUND-COLOR: #1a94e6">New Excel.Application<BR></FONT>    End If<BR>    MyXL.Application.Visible = True<BR>End Sub</P>
<P>Public Sub CreateNewBook()<BR>'新建一个工作簿<BR>    MyXL.Application.WorkBooks.Add<BR>End Sub</P>
<P> Public Sub CopyToClip(FormName As String, SubFormName As String)<BR>'使用代码将窗体上的数据复制到Windows粘贴板<BR>    Forms(FormName).Controls(SubFormName).SetFocus<BR>    DoCmd.RunCommand acCmdSelectAllRecords<BR>    DoCmd.RunCommand acCmdCopy<BR>End Sub</P>
<P>Public Sub CopyToExcel()<BR>'使用代码将Windows粘贴板的内容粘贴到Excel<BR>    GetExcel<BR>    MyXL.Application.WorkBooks.Add<BR>    MyXL.Application.ActiveSheet.Paste<BR>End Sub</P>
<P>Public Sub FormatTAB()<BR>'对导出到Excel中的数据进行格式化,比如,加上报表标题、设置表格线等。<BR>    Dim J As Integer<BR>    SetLine '设置表格线的子程序,在Access中实现对Excel文档格式化<BR>    MyXL.Application.ActiveSheet.Rows("1:1").Select<BR>    '插入两行作为标题行<BR>    For J = 1 To 2<BR>        MyXL.Application.Selection.Insert Shift:=xlDown<BR>    Next J<BR>    MyXL.Application.ActiveSheet.Range("A1") = "标题文字"<BR>    '设置表标题字体<BR>    MyXL.Worksheets(1).Range("A1").Select<BR>    With MyXL.Application.Selection.Font<BR>        .Name = "宋体"<BR>        .Size = 16<BR>    End With<BR>End Sub</P>
<P>Public Sub SetLine()<BR>'设置表格线<BR>    On Error Resume Next<BR>    MyXL.Application.Selection.Borders(xlDiagonalDown).LineStyle = xlNone<BR>    MyXL.Application.Selection.Borders(xlDiagonalUp).LineStyle = xlNone<BR>    MyXL.Application.Selection.WrapText = False<BR>    With MyXL.Application.Selection.Borders(xlEdgeLeft)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlThin<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>    With MyXL.Application.Selection.Borders(xlEdgeTop)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlThin<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>    With MyXL.Application.Selection.Borders(xlEdgeBottom)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlThin<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>    With MyXL.Application.Selection.Borders(xlEdgeRight)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlThin<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>    With MyXL.Application.Selection.Borders(xlInsideVertical)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlHairline<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>    With MyXL.Application.Selection.Borders(xlInsideHorizontal)<BR>        .LineStyle = xlContinuous<BR>        .Weight = xlHairline<BR>        .ColorIndex = xlAutomatic<BR>    End With<BR>End Sub</P>
<P>Public Sub CloseExcel()<BR>'关闭打开的工作簿<BR>'关闭Excel<BR>    On Error Resume Next<BR>    MyXL.Application.DisplayAlerts = False<BR>    MyXL.Application.Save<BR>    MyXL.Application.quit<BR>    Set MyXL = Nothing    '释放对该应用程序<BR>End Sub<BR></P>

西风独自凉 发表于 2007-8-13 18:42

  是否引用了excel部件。。<BR>

ry200w 发表于 2007-8-13 19:27

谢谢!按照你说的我引用选"Microsoft Excel 1x.0 Library"<br>在 VBA 编辑器中,[工具]--[引用], 选"Microsoft Excel 1x.0 Library", 点[确定]<br><br>问题已经解决!<br>再次感谢。
[align=right][color=#000066][此贴子已经被作者于2007-8-13 19:35:57编辑过][/color][/align]

西风独自凉 发表于 2007-8-13 20:33

不客气[em03][em03]

页: [1]

编程论坛