【问题标题】:Excel Column-WidthExcel 列宽
【发布时间】:2016-12-16 10:33:30
【问题描述】:

我想问一下如何导出到具有固定列宽的excel。因为一列的宽度取决于字符长度。

这是我的示例代码:适用于 Excel 和宏

Excel程序:

DEFINE VARIABLE h-excel AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE h-sheet AS COM-HANDLE.
DEFINE VAR w-invname AS CHAR INITIAL "file-path\excel.xls".

CREATE "Excel.Application" h-excel.

h-sheet = h-excel:Workbooks:OPEN (w-invname,,FALSE,,,,,,,,,,FALSE) NO-ERROR.
h-excel:visible = true.

h-excel:Cells:Select.

h-excel:Run("loading"). 

/*h-excel:Range("A" + STRING(5)):VALUE = "Date Covered " + STRING(fifr) + " - " + STRING(fito).*/

h-excel:Range("A6"):Select.

RELEASE OBJECT h-sheet.
RELEASE OBJECT h-excel.

END PROCEDURE.

Excel 宏:

Sub loading()
'
' loading Macro

'
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;file-path\text.txt", _
        Destination:=Range("A6"))
        .Name = "CarSumm"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 9
End Sub

【问题讨论】:

    标签: excel progress-4gl openedge column-width


    【解决方案1】:
    U may Try below code before exporting, U can also increase or decrease 1.08 static value if not getting desire output 
    
    intRowsCount = ActiveSheet.UsedRange.Columns.count
    Set objCells = ActiveSheet.Cells
    For c = 1 To intRowsCount
      objCells(1, c).ColumnWidth = 1.08 * Len(objCells(1, c).Value)
    Next
    

    【讨论】:

    • 感谢您的回答。顺便提一句。我应该在宏的哪里添加这个?宏观事物的新手。我只是复制并粘贴我们源代码中使用的内容。
    【解决方案2】:

    '根据标题值len改变列宽 intRowsCount = ActiveSheet.UsedRange.Columns.Count 设置 objCells = ActiveSheet.Cells 对于 c = 1 到 intRowsCount objCells(1, c).ColumnWidth = 1.08 * Len(objCells(1, c).Value) 下一个 '导出活动表 Sheets(ActiveSheet.Name).Copy 工作簿(2).激活 设置 objWS = Workbooks(2).Worksheets(1) objWS.Select

    'Save new worksheet with new workbookname
    ActiveWorkbook.SaveAs Filename:="FilePath.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Workbooks(2).Save
    Workbooks(2).Close
    

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2014-06-01
      • 2020-04-25
      • 2021-06-15
      • 2018-02-02
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多