Foxtable(狐表)用户栏目专家坐堂 → 生成的EXCEL报表的相同单元的自动合并问题


  共有2806人关注过本帖树形打印复制链接

主题:生成的EXCEL报表的相同单元的自动合并问题

帅哥哟,离线,有人找我吗?
audience68
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/28 19:42:00 [只看该作者]

甜版,这是例子,麻烦你指导,我想每次生成报表时,自动根据关联表的行数汇总“图纸工艺文件及进度状态”这一列,即不要出现两个或更多的重复的“图纸工艺文件及进度状态”。

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/28 19:42:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/28 20:02:00 [只看该作者]

Dim Book As New XLS.Book(ProjectPath & "Attachments\监造周报.xls")
Dim fl As String = ProjectPath & "Reports\监造周报.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
'Sheet.Locked = True '禁止编辑
With Sheet.PrintSetting
    '页眉左边为日期,中间为时间,右边为表名
    .Header = "&L&D &C&T &R&F"
    '在页脚右边打印页号和总页数
    .Footer = "&R第&P页,总&N页"
End With
Book.Build() '生成细节区
Book.Save(fl) '保存工作簿


Dim App As New MSExcel.Application
try
    App.DisplayAlerts = False '加上此行可禁止弹出合并前的提示
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim sr As Integer = 1
    Dim prev As String = ws.Cells(1,1).Text
    For r As Integer = 2 To Ws.UsedRange.Rows.count
        If ws.Cells(r, 1).Text <> prev AndAlso ws.Cells(r, 1).Text <> Nothing Then
            Dim Rg As MSExcel.Range = ws.Range("A" & sr & ":A" & r-1)
            Rg.Merge
            sr = r
            prev = ws.Cells(r, 1).Text
        End If
    Next
    App.Visible = True
   
catch ex As exception
    msgbox(ex.message)
    app.quit
End try


 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/28 20:22:00 [只看该作者]

Wounderful!,甜版你太厉害了,解决了我的大问题,虽然你的代码我还没有完全看懂,你用了try语句,我还从没有用过这个语句编过。感谢了。不然,这个报表还要在EXCEL中再次编辑,太麻烦,还牵涉到审批权限的问题,现在我可以直接打印成PDF格式了,在此感谢。

如果能在打印多页时自动在每页加上表头就更完美了!
表头是如下部分:
周报编号: zb0001
监造周报
监造流水号: A201409001 填报日期: 2014年9月7日
主要物资名称 加氢反应器 监理人员  
业主单位   项目经理  
制造单位   全部完成 审核人  

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/28 20:27:00 [只看该作者]

 参考这一段

 

打印输出

利用PageSetup属性,可进行各种打印设置。如:


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.PageSetup
    '设置打印区域
    .PrintArea = "A1:H10"   '打印工作表的指定区域
    .PrintArea = Ws.UsedRange.Address   '打印工作表的使用区域
    .PrintTitleColumns = Ws.Columns("A:H").Address   '打印列标题(在每一页的左边重复出现)
    .PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)
    '设置页面
    .PaperSize = MSExcel.XlPaperSize.xlPaperA4   '纸张大小
    .LeftMargin = 30 '页面左边距
    .RightMargin = 30'页面右边距
    .TopMargin = 50  '页面顶部边距
    .BottomMargin = 50   '页面底部边距
    .HeaderMargin = 40   '页面顶端到页眉的距离
    .FooterMargin = 40   '页脚到页面底端的距离
    .CenterHorizontally = True   '页面水平居中
    .CenterVertically = True '页面垂直居中
    '设置页眉
    .LeftHeader = "打印日期: &D" '左页眉,&D表示日期
    .CenterHeader = "&""隶书,常规""&20 数据分析表"   '中页眉,并将字体设置为隶书和20号字大小
    .RightHeader = "打印者: " & App.UserName '右页眉
    '设置页脚
    .LeftFooter = "文件: &F  &A" '左页脚,&F表示文件名,&A表示工作表名
    .CenterFooter = ""   '中页脚为空
    .RightFooter = "第 &P 页  共 &N 页"  '右页脚
    '打印模式
    .Orientation = MSExcel.xlPageOrientation.xlPortrait  '纵向打印
    .Orientation = MSExcel.xlPageOrientation.xlLandscape '横向打印
    .PrintHeadings = True'打印行号和列标
    .PrintGridlines = True   '打印网格线
    '缩放打印
    .Zoom = False'以下设置将缩印在一页内
    .FitToPagesWide = 1  '按照1页的宽度打印
    .FitToPagesTall = 1  '按照1页的高度打印
End With
App.Visible = True
Ws.PrintPreview
App.Quit


 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/28 22:10:00 [只看该作者]

打印设置似乎效果不行,回头我再研究把,但是我现在想把合并单元格的EXCEL报表存为PDF格式的,试了好久,还是不行,请甜版再指教。谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/28 22:15:00 [只看该作者]

vba另存为pdf代码参考

 

Dim App As New MSExcel.Application
try  
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\test.xls")
    '创建Excel文件对应的PDF文件
    wb.ExportAsFixedFormat(MSExcel.XlFixedFormatType.xlTypePDF, "d:\test.pdf", MsExcel.XlFixedFormatQuality.xlQualityStandard, True, True,  System.Reflection.Missing.Value,  System.Reflection.Missing.Value, False,  System.Reflection.Missing.Value)
    app.quit
catch ex As exception
    app.quit
End try


 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/28 22:23:00 [只看该作者]

谢谢甜版,我也自己实现了,非常感谢你的热心帮助,除了表头的问题,报表终于比较满意了。在此感谢指导。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/28 22:29:00 [只看该作者]

 加一句,打印的时候,就会每页就打印啊

 

Ws.PageSetup.PrintTitleRows = Ws.Rows("1:10").Address


 回到顶部
总数 19 上一页 1 2