以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自动行高没有作用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134161)

--  作者:2900819580
--  发布时间:2019/4/28 21:50:00
--  [求助]自动行高没有作用
   如一红色代码,自动行高没有效果,
 Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range = Ws.Range("8:" & tb.Rows.Count + 8)
    Rg.EntireRow.AutoFit  \'自动调整行高
    App.Visible = True
    ws.PrintOut(ActivePrinter:= e.Form.Controls("V_Com打印机").text)
    wb.save
    app.Quit

 

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190428213139.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/4/28 21:51:41编辑过]

--  作者:2900819580
--  发布时间:2019/4/29 7:53:00
--  

顶一下


--  作者:有点甜
--  发布时间:2019/4/29 10:02:00
--  

1、试试

 

    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range = Ws.Range("8:" & tb.Rows.Count + 8)
    Rg.WrapText = True
    Rg.EntireRow.AutoFit  \'自动调整行高
    App.Visible = True
    \'ws.PrintOut(ActivePrinter:= e.Form.Controls("V_Com打印机").text)
    \'wb.save
    \'app.Quit

 


--  作者:有点甜
--  发布时间:2019/4/29 10:20:00
--  

2、试试这样调整行高

 

Dim App As New MSExcel.Application
try
    Dim Wb As MSExcel.WorkBook = app.WorkBooks.open("c:\\aaa.xls")
    Dim rg As MSExcel.Range
    Dim Ws = wb.WorkSheets(1)
    Dim tempWs = wb.WorkSheets.Add
    For Each rg In ws.UsedRange
        Dim tempCell As MSExcel.Range
        Dim width As Double = 0
        Dim tempCol
        For Each tempcol In rg.MergeArea.Columns
            width = width + tempcol.ColumnWidth
        Next
        tempWs.Columns(1).WrapText = True
        tempWs.Columns(1).ColumnWidth = width
        tempWs.Columns(1).Font.Size = rg.Font.Size
        tempWs.Cells(1, 1).Value = rg.Value
        tempWs.Cells(1, 1).RowHeight = 0
        tempWs.Cells(1, 1).EntireRow.Activate
        tempWs.Cells(1, 1).EntireRow.AutoFit
        If (rg.RowHeight < tempWs.Cells(1, 1).RowHeight) Then
            Dim tempHeight As Double
            Dim tempCount As Integer
            tempHeight = tempWs.Cells(1, 1).RowHeight
            tempCount = rg.MergeArea.Rows.Count
            For Each addHeightRow As object In rg.MergeArea.Rows
               
                If (addHeightRow.RowHeight < tempHeight / tempCount) Then
                    addHeightRow.RowHeight = tempHeight / tempCount
                End If
                tempHeight = tempHeight - addHeightRow.RowHeight
                tempCount = tempCount - 1
            Next
            rg.WrapText = True
        End If
    Next
    app.DisplayAlerts = False
    tempWs.Delete
    app.visible = True
catch ex As exception
    msgbox(ex.message)
    app.quit
End try