最近接触了一个关于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. hdu1879 继续畅通工程

    http://acm.hdu.edu.cn/showproblem.php?pid=1879 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...

  2. Call and Apply in JavaScript

    Call 和 Apply 方法可以用来代替另一个对象调用一个方法,改变this指向. 1.call -call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) -调用一 ...

  3. HTML之总结

    基础结构 基础标签有HTML,head,body. 合格的的HTML页面: <!DOCTYPE html> <html lang="en"> <hea ...

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

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

  5. A Xamarin.Forms Infinite Scrolling ListView

    from:http://www.codenutz.com/lac09-xamarin-forms-infinite-scrolling-listview/ The last few months ha ...

  6. [转] 配置Log4j

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

  7. ios app 提交评审注意事项

    在网络上看到的一个文档是这样写,原文的出处无法确认了 基本要点 ·         不能导致手机故障(比如崩溃或屏幕问题) ·         长时间/过度使用之后反应仍然很快 ·         应 ...

  8. java目录

    1. 在jsp文件或Servlet中,可以通过getServletContext().getRealPath("/")来获取项目根目录的绝对路径. 2. Java桌面程序中,可以通 ...

  9. 软件包管理 之 Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南

    在本文中,我们主要解介绍 Fedora core 4.0 通过软件包管理工具yum来在线安装更新软件:关于apt工具应用,我们会在另外一篇中介绍: 一. yum 的使用:有些初学Linux的弟兄可能问 ...

  10. ubuntu16.04+opencv3.1配置

    #安装必要的依赖sudo apt-get install build-essential cmakesudo apt-get install cmake Git libgtk2.0-dev pkg-c ...