设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 8051|回复: 23
打印 上一主题 下一主题

[基础应用] Access导出excel修改标题无法修改

[复制链接]
跳转到指定楼层
1#
发表于 2007-11-28 17:31:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
游客,如果您要查看本帖隐藏内容请回复

老是说91错误,好像偶有几次也能通过,百思不解,恳请帮助

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2007-11-28 19:56:28 | 只看该作者
原代码如下:
Dim i As Integer, lblName As String, j As Integer
Dim TP(15) As String

        Dim xlApp As Excel.Application '定义EXCEL类
    Dim xlBook As Excel.Workbook '定义工件簿类
    Dim xlSheet As Excel.Worksheet '定义工作表类
   

For i = 1 To 15
    lblName = "Label" & Format(i, "00")
    If Me.Child0.Form(lblName).Visible = True Then
        TP(i) = Me.Child0.Form(lblName).Caption
        j = i
    Else      
        Exit For
    End If
Next i
'导出到Excel
    Dim stDocName As String
    stDocName = ChrW(23548) & ChrW(20986) & ChrW(69) & ChrW(120) & ChrW(99) & ChrW(101) & ChrW(108)
    DoCmd.OutputTo acForm, "StarShow", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
'导出的数据标题不直观
'修改Excel中第一列的标题
    Set xlSheet = ActiveSheet
   
    xlSheet.Cells(1, 1) = "姓 名"        '这里就出错了
    xlSheet.Cells(1, 2) = "义工编号"
    xlSheet.Cells(1, 3) = "合 计"
   
    i = 1
    For i = 1 To j
   
        xlSheet.Cells(1, i + 3) = TP(i)
        
    Next i
   
xlBook.Save  '保存

Set xlSheet = Nothing
Set xlApp = Nothing
Set xlBook = Nothing

Erase TP  '回收数组

[ 本帖最后由 盗到稻 于 2007-11-28 19:57 编辑 ]

点击这里给我发消息

3#
发表于 2007-11-29 09:44:23 | 只看该作者
中间代码修改如下:
    Dim xlApp As Excel.Application '定义EXCEL类
    Dim xlBook As Excel.Workbook '定义工件簿类
    Dim xlSheet As Excel.Worksheet '定义工作表类
   

'For i = 1 To 15
'    lblName = "Label" & Format(i, "00")
'    If Me.Child0.Form(lblName).Visible = True Then
'        TP(i) = Me.Child0.Form(lblName).Caption
'        j = i
'    Else
        
'        Exit For
'    End If
'Next i

    Dim stDocName As String

    stDocName = ChrW(23548) & ChrW(20986) & ChrW(69) & ChrW(120) & ChrW(99) & ChrW(101) & ChrW(108)
    DoCmd.OutputTo acForm, "StarShow", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
    'DoCmd.RunMacro stDocName
    'DoCmd.OutputTo acOutputForm, stDocName, acFormatXLS, , True
   
   
    'AppActivate "Microsoft Excel"
    Set xlApp = GetObject(, "Excel.Application")
    'Set xlBook = GetObject("StarShow.xls")
    'Debug.Print ActiveWindow.Caption
    Set xlBook = xlApp.ActiveWorkbook
    Set xlSheet = xlApp.ActiveSheet
    'xlSheet.Activate
    'xlApp.Visible = True
   
   
    xlSheet.Cells(1, 1) = "编 号"
    xlSheet.Cells(1, 2) = "姓 名"
    xlSheet.Cells(1, 3) = "手 机"
    xlSheet.Cells(1, 4) = "电 话"
就可以了,因为你对未获得Excel对象,所以出错

点击这里给我发消息

4#
发表于 2007-11-29 09:45:04 | 只看该作者
另外,输入文件可能还未完成,所以在 Set xlApp = GetObject(, "Excel.Application")
之前要 用程序 sleep 几秒钟
5#
 楼主| 发表于 2007-11-29 13:19:15 | 只看该作者
感谢王站,
6#
 楼主| 发表于 2007-11-30 16:17:09 | 只看该作者
如果Excel打开了,就不会出错,如果Excel已经打开了会出现429的错误
所以加入了一个判断Excel是否打开的代码:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long

    '判断Excel是已经打开
    Dim hWnd As Long
        hWnd = FindWindow("XLMAIN", 0)
        If hWnd = 0 Then
               Set xlApp = New Excel.Application
         End If

另外王站你说的Sleep函数是不是延时功能的?是不是类似下面的?
Private Declare Function timeGetTime Lib "winmm.dll" () As Long   '
Public Function atSleep(WaitDate As Integer)
Dim Savetime As Double
Savetime = timeGetTime '记下开始时的时间

While timeGetTime < Savetime + WaitDate
    DoEvents
Wend

End Function

VBA中没有找到Sleep函数,不过好像用不上。
7#
发表于 2008-3-10 13:13:29 | 只看该作者
学习学习学习学习!!
8#
发表于 2008-3-24 08:22:50 | 只看该作者
学习学习啊 !!!!!!!!!!!!!
9#
发表于 2009-3-16 08:57:13 | 只看该作者
原代码是不是有问题
10#
发表于 2009-3-16 11:36:16 | 只看该作者
楼主能不能把修改过的代码再共享一下,特别是判断excel是不是打开的那一段代码,我放入程序后出错:
"编译错误
在end sub、end function 或end 属性后面只能出现注释
"
我想用这个代码,请楼主帮下忙.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-4 07:11 , Processed in 0.106585 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表