Foxtable(狐表)用户栏目专家坐堂 → 设置excel表页面出错请解决


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

主题:设置excel表页面出错请解决

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/18 17:51:00 [显示全部帖子]

 

我测试你的代码没问题,请说明报什么错。

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/19 11:03:00 [显示全部帖子]

1、没看懂你这段代码的目的,特别是最后。如果需要打印,直接把有效区域全部打印即可啊;

 

2、HPageBreaks.Count是excel的bug,需要切换到打印预览模式,才能得到准确的值的,如,加入如下代码

 

app.ActiveWindow.view = 2

 

整体代码如下

 

Dim ddj As String="c:\test.xls"
Dim App As New MSExcel.Application
App.Visible = True


Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ddj)


Dim sheet As MSExcel.WorkSheet = Wb.WorkSheets("卷内目录")

 


Sheet.PageSetup.PrintArea = ""

Dim nqx As Integer

For nqx = 0 To 1500
   
   
    If Sheet.Cells(3 + nqx, 4).Value = "" And _
        Sheet.Cells(4 + nqx, 4).Value = "" And _
        Sheet.Cells(5 + nqx, 4).Value = "" Then
       
       
        Exit For
    End If
   
   
Next nqx

 


Dim  hhu As  String = "A3:G" & nqx + 2


Sheet.Range(hhu).Rows.AutoFit

Dim sb As Integer


For sb = 0 To nqx + 2 + 15
   
   
   
   
    Dim mm As String = 3 + sb & ":" & 3 + sb
   
    If Sheet.Rows(mm).RowHeight < 42.75 Then
       
        Sheet.Rows(mm).RowHeight = 42.75
       
    End If
   
    3377:
   
   
Next sb

 

 

Dim pages

Dim Rg As MSExcel.Range = Sheet.Cells

Dim HBreaks


Dim  NumPages


Dim Rng As  MSExcel.Range
Dim Sht As   MSExcel.WorkSheet = Sheet

app.ActiveWindow.view = 2
'计算总页数
HBreaks = Sht.HPageBreaks.Count

NumPages = (HBreaks + 1)


'计算某单元格的当前页
Rng = Sheet.Cells(2 + nqx, 4)

 

Dim iii As  Integer

For iii = 1 To HBreaks
    If Sht.HPageBreaks(iii).Location.Row > nqx + 2 Then Exit For '获取此页行号,运行这里出错
Next


Sheet.PageSetup.PrintArea = "$A$1:$G$" & Sht.HPageBreaks(iii).Location.Row -1 '运行这里也出错


Wb.save()



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/19 12:57:00 [显示全部帖子]

以下是引用hpbcfmqr在2019/3/19 12:51:00的发言:
“1、没看懂你这段代码的目的,特别是最后。如果需要打印,直接把有效区域全部打印即可啊;”

因为最后一页可能只有一行或两行,打印出来很难看,所以要打印出含空格行的整页。



 

那改成

 

app.ActiveWindow.view = 2

 

 


 回到顶部