【问题标题】:how to get field width info of the excel text to column如何获取excel文本的字段宽度信息到列
【发布时间】:2019-05-06 06:17:14
【问题描述】:

使用 Excel 向导将文本转换为列时。如何获取此转换中使用的字段信息数组。例如,在示例文本到列中生成的 vba 代码中,我们如何获取使用的 fieldinfo 数组 Array(0, 1), Array(24, 1), Array(44, 1) 等最好在一个变量中

Selection.TextToColumns Destination:=Range("A5"), DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(24, 1), Array(44, 1), Array(70, 1), Array(79, 1), _
    Array(96, 1), Array(107, 1), Array(118, 1), Array(127, 1), Array(135, 1)), _
    TrailingMinusNumbers:=True

【问题讨论】:

  • 从哪里采购?
  • @TimWilliams VBA 新手,请不要介意。但是当我们在 Excel 中通过 Text to column 向导时,它会自动计算这些宽度。但是,出于我的目的,我需要调整这个数组,因为它会稍微错位。例如,array(44,1) 理想情况下应该是 Array(50,1)。如果我们可以将excel默认检测到的这些字段信息放入变量中
  • 为什么不在代码中直接更改呢?您想在运行时进行调整吗?
  • 需要比较两个表之间到达的数组,然后根据标准选择最佳字段宽度。数组来自另一个表 Array(Array(0, 1), Array(24, 1), Array(50, 1), Array(70, 1) 所以需要调整第三个断点,如 Array(44, 1) 到 array(50,1)。复制向导中可用的手动断点。
  • 听起来你需要为用户构建一个类似的 UI 来做出这些选择 - 如果你不信任“自动”方法,那么你总是需要让用户拨打电话?

标签: excel vba


【解决方案1】:

像这样?

Dim fldInfo

fldInfo = Array(Array(0, 1), Array(24, 1), Array(44, 1), Array(70, 1), Array(79, 1), _
                Array(96, 1), Array(107, 1), Array(118, 1), Array(127, 1), Array(135, 1))

Selection.TextToColumns Destination:=Range("A5"), DataType:=xlFixedWidth, _
                        FieldInfo:=fldInfo, TrailingMinusNumbers:=True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2013-12-09
    • 2017-07-23
    • 2012-03-24
    相关资源
    最近更新 更多