以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码生成excel表格时列宽如何控制?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=163314)

--  作者:YDS
--  发布时间:2021/4/23 9:19:00
--  代码生成excel表格时列宽如何控制?
代码生成excel表格时列宽如何控制?
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
\'定义列宽
Sheet.Cols(0).Width = 120
Sheet.Cols(1).Width = 80
Sheet.Cols(2).Width = 80
Sheet.Cols(3).Width = 80
我如果想让第五列自动列宽,代码要如何写?
Sheet.Cols(4).Width = ?

--  作者:有点蓝
--  发布时间:2021/4/23 9:29:00
--  

如果反过来,希望自动调整单元格大小,使单元格能够显示全部数据。这需要用到AutoFit方法。如:

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)
Dim Rg As MSExcel.Range = Ws.Range("A1")
Rg.Value = "Foxtable操控Excel全攻略"
Rg.Font.Size = 50 \'把字体放大
Rg.EntireColumn.AutoFit   \'自动调整列宽
Rg.EntireRow.AutoFit  \'自动调整行高
App.Visible = True

如果要调整工作表全部单元格的大小,可以使用Cells属性。如:

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)
Dim Rg As MSExcel.Range = Ws.Cells
Rg.EntireColumn.AutoFit   \'自动调整列宽
Rg.EntireRow.AutoFit  \'自动调整行高
App.Visible = True

--  作者:YDS
--  发布时间:2021/4/23 9:40:00
--  
也就是我需要先生成excel文件,然后再用vba的方法调整列宽,没有办法在保存为excel文件之前就设定列宽吗?
--  作者:有点蓝
--  发布时间:2021/4/23 9:45:00
--  
直接使用vba填充和生成excel文件
--  作者:YDS
--  发布时间:2021/4/23 9:47:00
--  
主要是员工电脑现在用的都是wps,没有安装office应该使用不了vba吧?


--  作者:有点蓝
--  发布时间:2021/4/23 9:48:00
--  
试试不就知道了
--  作者:有点蓝
--  发布时间:2021/4/23 9:50:00
--  
如果使用XLS.Book,有个笨方法,给这个列赋值的时候,记录这一列单元格最大长度的字符长度,然后大概估算一下宽度,最后再设置这一列的宽度
--  作者:YDS
--  发布时间:2021/4/23 9:55:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2021-04-23_09-54-41.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/4/23 10:01:00
--  
那就只能使用7楼方法了