vb中的单词:range.converttotable分隔符

时间:2016-01-26 13:27:46

标签: vb.net ms-word

我使用以下命名空间:Microsoft.Office.Interop

oDocs是我用过的Word-Instance

intColumns是列数(从数据表转换)

intRows是DataTable中的行数(colName为+1)

    Dim rng As Word.Range
    rng = oDocs.Application.Selection.Range
    rng.Text = strTable
    Dim WordTable As Word.Table = rng.ConvertToTable(NumRows:=intRows + 1,  _
           NumColumns:=intColumns, Separator:=Word.WdSeparatorType.wdSeparatorColon)

对于大多数情况,此代码非常有用,但并非适用于所有情况。 问题:值中的分隔符似乎未使用。所以有时表格没有正确创建。

我知道在Word中使用converttotable方法时可以选择单独的分隔符。我如何以编程方式执行此操作而不是被迫使用五个枚举中的一个?

修改

搞定了! Cindy Meister带我走上正确的道路;

Dim WordTable As Word.Table = rng.ConvertToTable(NumRows:=intRows + 1, NumColumns:=intColumns, Separator:="$") “Spearator:=”表示你确实放了en enum,你也可以简单地把一个长度为1的String放到那里。我使用'$'因为它可能没有在DataTable值中使用。

1 个答案:

答案 0 :(得分:1)

嗯,是的,这不是直截了当的,但录制一个宏揭示了秘密...

使用"其他"设置自定义分隔符时这将设置Word应用程序DefaultTableSeparator。还有一个Enum:

Dim wdApp as Word.Application = oDocs.Application
Dim rng As Word.Range = wdApp.Selection.Range
wdApp.DefaultTableSeparator = "|"
rng.Text = strTable
Dim WordTable As Word.Table = rng.ConvertToTable(NumRows:=intRows + 1,  _
       NumColumns:=intColumns, _
       Separator:=Word.WdTableFieldSeparator.wdSeparateByDefaultListSeparator)