设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2015|回复: 5

[与其它组件] 【讨论】导出Excel2007格式的Bug

[复制链接]
发表于 2017-1-12 13:46:41 | 显示全部楼层 |阅读模式
老规矩,先贴代码。
  1. Sub test()
  2.     Dim rst As New ADODB.Recordset
  3.     Dim qry1 As DAO.QueryDef
  4.     Dim qry2 As DAO.QueryDef
  5.     Dim strSQL1 As String
  6.     Dim strSQL2 As String
  7.    
  8.     rst.Open "select 部门 from 部门表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  9.     Set qry1 = CurrentDb.QueryDefs("日")
  10.     Set qry2 = CurrentDb.QueryDefs("计")
  11.    
  12.     Do Until rst.EOF
  13.         qry1.Name = rst(0) & "日数据"
  14.         strSQL1 = "SELECT 日期,部门,微信号,客服,类别,点击数,新增粉丝数,新粉咨询数," _
  15.                 & "新粉咨询率 AS 咨询互动率,未成年数 AS 未成年人数,未成年占比," _
  16.                 & "沉睡粉丝 AS 沉睡粉丝数,沉睡率,新粉订单 AS 新粉订单数,新粉开单率," _
  17.                 & "新粉业绩 AS 新单业绩,客单价 FROM 汇总表 where 部门='" & rst(0) _
  18.                 & "' order by 日期,部门,微信号 desc"
  19.         qry1.SQL = strSQL1
  20.         
  21.         qry2.Name = rst(0) & "累计"
  22.         strSQL2 = "SELECT 日期,部门,微信号,客服,类别,新增加粉数,互动咨询数,互动咨询率," _
  23.                 & "未成年人数,未成年占比,沉睡粉丝数,沉睡率,新粉订单数,新粉业绩,新粉开单率 " _
  24.                 & " FROM 累计部门 where 部门='" & rst(0) & "' order by 日期,部门,微信号 desc"
  25.         qry2.SQL = strSQL2
  26.         '2007版本导出后打开时自动选择全部工作簿,而且固定选择了C5单元格。
  27.         
  28.         DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, qry1.Name, "D:\媒介微信明细" & Format(Date - 1, "mmdd") & ".xlsx", True
  29.         DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, qry2.Name, "D:\媒介微信明细" & Format(Date - 1, "mmdd") & ".xlsx", True
  30.         '改2003格式则一般不会出问题
  31.         'DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, qry1.Name, "D:\媒介微信明细" & Format(Date - 1, "mmdd") & ".xls", True
  32.         'DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, qry2.Name, "D:\媒介微信明细" & Format(Date - 1, "mmdd") & ".xls", True
  33.         rst.MoveNext
  34.         
  35.     Loop
  36.     rst.Close
  37.     qry1.Name = "日"
  38.     qry2.Name = "计"
  39.         
  40. End Sub
复制代码
导出的代码应该是没问题的。然而,一旦打开Excel之后,就会发现全部工作簿的C5单元格处于选择状态:

本来这也不算大问题。然而,变态的老板非要处理Excel格式(格式化代码见附件)。于是就多了很多步骤。如果按原先的方案处理,由于全选了某个单元格,所以一旦遇到select、active等等方法时很容易出错。当然分步执行,偶尔是没问题的。
另外,如果改为2003格式,则不会有这个问题。
也不知道是我的电脑问题,还是导出Excel2007格式本身存在这个问题。
我的系统是:
WinXP+Office 2010
大家可以试试其他情况,跟下帖。顺序依次是,点击test()代码块内任意位置,按下F5运行;然后点击fomatExcel,按同样方法运行。

**********************************
2016-1-12更新(附件未更新):
红尘昨天看了,主要是里面的代码含有太多的range.select,结果就出问题了。回头我把完整的程序写完再上传实例。谢谢大家关注!
插入行列,修改单元格格式是不需要select的,只需要使用相应方法或者修改相应属性即可。
不过,一旦打开Excel之后,就会发现全部工作簿的C5单元格处于选择状态,仍然是诡异的不可知状况。
**********************************

本帖子中包含更多资源

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

x

点击这里给我发消息

发表于 2017-1-12 14:06:14 | 显示全部楼层
我的Win7+Office2010也是这样情况,不知是何原因

点击这里给我发消息

发表于 2017-1-12 14:39:30 | 显示全部楼层
WIN7+OFFICE2013

本帖子中包含更多资源

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

x
发表于 2017-1-12 14:53:17 | 显示全部楼层
被 Select 坑死的孩子

点击这里给我发消息

发表于 2017-1-12 20:39:10 | 显示全部楼层
Select 选择 单元格?
自动生成的代码?
发表于 2017-1-12 21:05:42 | 显示全部楼层
先保存为2003,再加点代码另存为 2007格式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 19:21 , Processed in 0.084534 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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