最近接触了一个关于Access工具的项目,所以整理下需要使用的方法。

功能要求简介:

  1.将数据表中的数据导出到excel和PDF

  2.并根据某个字段名称分sheet输出。

  3.无模板方式

方案简介:

  1.设置头部的标题内容和打印区域的单元格格式,标题内容的格式再单独调整(比起一个个单元格调整,可以提高效率)

  2.copy设置好的单元格,一次性生成多个sheet.(开始创建sheet会有点时间开销,但后面会快一点。总体上来说效率提高了)

  3.然后就是每个sheet的数据处理了

需要用到的函数:

  不会写的函数,可以使用宏录制,然后查看录制的代码

  1.打印设置

    

    With objCurSheet.PageSetup   'objCurSheet 当前sheet名称
.PaperSize = xlPaperA3 '打印纸大小:A3
.Orientation = xlLandscape '打印方向:横向
.PrintTitleRows = "$1:$7" '设置第一行至第七行为标题
.PrintTitleColumns = "A:O" '设置A到O列为标题列
.PrintArea = "$A:$O" '设置打印区域A到O列
.BottomMargin = '页边距
.TopMargin = '页边距
End With

  2.设置单元格为文本格式

    

objCurSheet.Range("A:O").NumberFormatLocal = "@" '设置A到O列为文本格式

  3.设置单元格宽度

    objCurSheet.Columns("A").ColumnWidth =  

  4.接下来就不继续列举单元格操作,大家自己录制宏看吧。我说一下宏录制的问题吧。

    宏录制时,Range等属性前是不加表名的,并且会添加选中的操作,需要修改

    比如:

    Range("B9").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation =
.AddIndent = False
.IndentLevel =
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

       其实上面的代码应该改为如下(1.加上表对象,跟excel进程正常退出是有关系的。2.减少对象的选择,可以提高效率):

    

    With objCurSheet.Range("B9")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation =
.AddIndent = False
.IndentLevel =
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

  5.链接当前数据库表,查询方式如下:

    

    Dim ExcelAp As New Excel.Application
Dim ExcelBk As New Excel.workBook
Set ExcelBk = ExcelAp.Workbooks.Add
Dim ExcelSh As New Excel.Worksheet
Dim Obj_DataBase As DAO.Database
Dim Obj_Recordset As DAO.Recordset Set Obj_DataBase = CurrentDb()
Application.SysCmd acSysCmdSetStatus, "Exporting" '设置Acess左下角的状态提示 Set Obj_Recordset = Obj_DataBase.OpenRecordset("tablename") Do While Not Obj_Recordset.EOF
'数据处理    Obj_Recordset.MoveNext
   Loop

  6.导出excel和PDF,并打开excel

  

If OutType =  Then
extension = ".xls"
Else
extension = ".pdf"
End If
'Open the window to select the target folder
Dim result As String
'弹出选择路径的窗口 start
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Please select the target folder"
.InitialFileName = "文件名" & extension
If .Show = - Then
result = .SelectedItems() ’获取存储路径
Else
'退出进程并释放资源
ExcelBk.Close Savechanges:=False
ExcelAp.Quit
Set ExcelBk = Nothing
Set ExcelAp = Nothing
Set ExcelSh = Nothing
Set Obj_DataBase = Nothing
Set Obj_Recordset = Nothing
Application.SysCmd acSysCmdSetStatus, "Exporting canceled"
Exit Function
End If
End With
'弹出选择路径的窗口 end
If OutType = Then
'保存文件
ExcelBk.SaveAs FileName:=result
ExcelBk.Close If InStr(, result, ".xls") = Then
result = result & ".xls"
End If '打开excel文件
ExcelAp.Visible = True
ExcelAp.Workbooks.Open FileName:=result
Else
'导出 PDF
ExcelBk.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=result, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=True
ExcelBk.Close Savechanges:=False
ExcelAp.Quit
End If
Set ExcelBk = Nothing
Set ExcelAp = Nothing
Set ExcelSh = Nothing
Set Obj_DataBase = Nothing
Set Obj_Recordset = Nothing

导出excel和PDF小结 vba的更多相关文章

  1. java导入导出excel常用操作小结及简单示例

    POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFS ...

  2. Ionic2+WebApi 导出Excel转Pdf文件。

    步骤: 1.首先在WebApi中先把excel生成好. 2.把excel转成Pdf,并返回下载的链接. 3.Ionic2的页面做好下载的接口. 嗯~思路很清晰,那么下面就来详细的操作吧. 以下是H5的 ...

  3. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

  4. java使用poi导出excel

    继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...

  5. java操作office和pdf文件页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...

  6. RDLC - 后台代码直接导出Excel/PDF/Word格式

    最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...

  7. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  8. 文件导出Excel、Word、Pdf

    如果要将查询结果导出Excel,只要将页面的Context-Type修改下: header( "Content-Type: application/vnd.ms-excel"> ...

  9. Vue框架下实现导入导出Excel、导出PDF

    项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...

随机推荐

  1. ServiceStack Web Service 创建与调用简单示列

    目录 ServiceStack 概念 ServiceStack Web Service 创建与调用简单示列 上篇文章介绍了ServiceStack是什么,本章进入主题,如何快速简单的搭建Service ...

  2. jQuery/javascript实现网页注册的表单验证

    <html> <head> <meta charset="utf-8"> <title>注册表单验证</title> & ...

  3. Javascript提升阶段学习

    JavaScript1:javascript简介 JavaScript是一种脚本语言,能实现网页内容的交互显示,当用户在客户端显示该网页时,浏览器就会执行JavaScript程序,用户通过交互的操作来 ...

  4. 从range和xrange的性能对比到yield关键字(中)

    上节提出了range和xrange的效率问题,这节我们来探究其中的原因   yield的使用   我们看下面的程序: #coding: utf-8 def test(): print 4 print ...

  5. python find函数

    Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 ...

  6. 巧用在线html编辑器,保存文章到数据库(带html标签)

    1.对于读取数据库的文章字段刷新到web页面,如何使文章格式很好的显示出来,那么数据库应存text格式,并记录文章的个数(转换为html): 2.如何转换html格式,可以使文章从word直接粘贴到在 ...

  7. 数据采集:完美下载淘宝Ip数据库 简单的程序节省60元人民币而不必购买数据库

    曾经做网站类型的程序时,经常需要收集客户端的访问数据,然后加以分析.这需要一个Ip数据库,数据表中显示Ip所在的省份市区等信息.网络上有流传的Ip纯真数据库,一些公开的Web服务也可以查询Ip地址信息 ...

  8. IntelliJ IDEA + Maven环境编写第一个hadoop程序

    1. 新建IntelliJ下的maven项目 点击File->New->Project,在弹出的对话框中选择Maven,JDK选择你自己安装的版本,点击Next 2. 填写Maven的Gr ...

  9. Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  10. 在Window下安装Oracle 12C Cloud Control Agent

    ① 准备好安装源,这个ORACLE普通账号无法下载到,有需要的可以联系我   p14570373_112000_Generic.zip,用于Windows 64位操作系统 ② 解压p14570373_ ...