Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用VB.NET在word上创建多表_Vb.net_Loops_Dynamic_Ms Word_Office Interop - Fatal编程技术网

如何用VB.NET在word上创建多表

如何用VB.NET在word上创建多表,vb.net,loops,dynamic,ms-word,office-interop,Vb.net,Loops,Dynamic,Ms Word,Office Interop,我的问题是。我想做一个循环,因为我要创建多个表。问题是,当循环occours时,它给了我一个错误,告诉我like列(2)的大小已经过调整,并且是它的两倍。。。所以我想我应该创建一个像“Tabela2”这样的变量,但是我怎么能创建一个动态变量呢 Dim Linha3 = WordDoc.Paragraphs.Add Dim Tabela = WordDoc.Tables.Add(Linha3.Range, 7, 5) Tabela.Range.Fo

我的问题是。我想做一个循环,因为我要创建多个表。问题是,当循环occours时,它给了我一个错误,告诉我like列(2)的大小已经过调整,并且是它的两倍。。。所以我想我应该创建一个像“Tabela2”这样的变量,但是我怎么能创建一个动态变量呢

 Dim Linha3 = WordDoc.Paragraphs.Add
            Dim Tabela = WordDoc.Tables.Add(Linha3.Range, 7, 5)
            Tabela.Range.Font.Name = "Calibri"
            Tabela.Range.Font.Size = 8
            Tabela.Columns(2).Width = 50
            Tabela.Columns(3).Width = 150
            Tabela.Columns(4).Width = 80
            Tabela.Columns(5).Width = 80
            Tabela.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter
            Tabela.Cell(1, 4).Merge(Tabela.Cell(1, 5))

您必须在Windows桌面应用程序中添加一个Button1控件,并将此代码循环用于i=1到3-这里3是要添加到Word文档中的表的计数。

添加更多表的内容是。我的代码如下:

Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim objApp = New Word.Application
    Dim objDoc As Word.Document

    'For New Page = Word.WdBreakType.wdPageBreak
    'For New section without a corresponding page break = Word.WdBreakType.wdSectionBreakContinuous
    Dim objPageBreak As Object = Word.WdBreakType.wdSectionBreakContinuous

    objApp = CreateObject("Word.Application")
    objApp.Visible = True
    objDoc = objApp.Documents.Add

    For i = 1 To 3
        CreateTableInWordDocument(objDoc.Bookmarks.Item("\endofdoc").Range, objDoc, objApp)
        objDoc.Bookmarks.Item("\endofdoc").Range.InsertBreak(objPageBreak)
    Next

End Sub

Private Sub CreateTableInWordDocument(objRange As Word.Range, objDoc As Word.Document, objApp As Word.Application)
    Dim objTable As Word.Table

    objTable = objRange.Tables.Add(objRange, 7, 5)
    objTable.Borders.Enable = True
    objTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleDouble
    objTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle

    Dim r As Integer, c As Integer
    For r = 1 To 7
        For c = 1 To 5
            objTable.Cell(r, c).Range.Text = "Row" & r & " Column" & c
        Next
    Next

    objTable.Rows.Item(1).Range.Font.Bold = True
    objTable.Rows.Item(1).Range.Font.Italic = True

    Me.Close()
End Sub
End Class   
“WordDoc.parations.Add”与我在WordDoc上使用的不同。我在文档的其余部分使用了“Linha”,而不是Linha3。Idk为什么会产生差异,但这就是给我错误的原因。 所以我把它改成了“Linha”,效果很好,对一些单元格的文本进行了一些自定义编辑

Dim Tabela = WordDoc.Tables.Add(Linha3.Range, 7, 5)
答案就是不要再加一个单词,段落,你应该很好

Dim WordDoc = WordApp.Documents.Add
Dim Linha = WordDoc.Paragraphs.Add