Excel VBA代码转换

下面的代码中的FieldInfo给了我一些问题。 我试过在线转换器,但是这部分代码看起来不太好。 我也试图通过MSDN的信息,但我找不到任何。 在哪里可以find如何转换该部分的信息,即在C#中Array(x,y)转换为什么?

任何帮助表示赞赏。

下面是我正在努力的代码的一个例子。

Workbooks.OpenText Filename:= _ "" & myZdrive & "\CI_System\Source_Files\" & myPosFile & "", Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _ Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 1), _ Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 2), Array(15 _ , 1), Array(16, 1), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2)) Rows("1:1").Select Selection.Font.Bold = True Cells.Select Cells.EntireColumn.AutoFit 

您发布的VBA代码看起来像是在Excel中完成的macroslogging。 例如,我通过打开纯文本文件(.txt)来logging以下内容:

 Workbooks.OpenText Filename:= _ "C:\test.txt" _ , Origin:=xlWindows, startRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1) 

这是使用第一个对话框中选中的“分隔”选项logging的。 如果我改为select“固定宽度”,然后在input数据中手动创build多个列,则录制内容如下所示:

 Workbooks.OpenText Filename:= _ "C:\test.txt" _ , Origin:=xlWindows, startRow:=1, DataType:=xlFixedWidth, FieldInfo:= _ Array(Array(0, 1), Array(2, 1), Array(10, 1), Array(18, 1), Array(30, 1), _ Array(41, 1), Array(55, 1)) 

Excel文本导入对话框截图

如果我不得不猜测,我会说有人使用“固定宽度”选项loggingmacros,然后将VBA代码从DataType:=xlFixedWidthDataType:=xlDelimited

如果你的input数据是实际分隔的,你应该可以忽略所有凌乱的FieldInfo数组信息,让Excel自动处理分隔符,只需设置DataType:=xlDelimited

如果您确实需要指定固定宽度的列,那么Bobort发布的链接将是一个很好的开始。 从外观上看, FieldInfo需要一个包含任意数量的子数组的VBA Variant数组,每个数组包含两个数字:列宽和数据types。

编辑:

Origin字段用于描述从下拉菜单中select的文本文件的格式:Macintosh,Windows(ANSI)或MS-DOS(PC-8)。