2013-01-22 47 views
-1

我目前正在编写此应用程序来打印并创建一个报告给一个新的Word文档。但是,我遇到了一个绊脚石。当我将数据写入这个新的Microsoft Word文档时,他们以任何方式检查它是否有新页面,例如报告占用了10页,他们是否检查应用程序何时开始写入新页面?操纵微软字


代码:

Dim objWord 
As Word.Application 
Dim objDoc As Word.Document 
Dim objTable As Word.Table 
Dim r As Integer, c As Integer 
Dim pages1 As Pages 
Dim pagecountbefore As Integer 

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

pagecountbefore = pages1.Count 

objTable = objDoc.Tables.Add(objDoc.Bookmarks.Item("\endofdoc").Range, 3, 5) 
objTable.Range.ParagraphFormat.SpaceAfter = 6 
For r = 1 To 1000 
    For c = 1 To 5 
     If r = 1 Then 
      Select Case c 
       Case "1" 
        objTable.Cell(r, c).Range.Text = "PCI DSS Requirements " 
       Case "2" 
        objTable.Cell(r, c).Range.Text = "Testing Procedures " 
       Case "3" 
        objTable.Cell(r, c).Range.Text = "In Place" 
       Case "4" 
        objTable.Cell(r, c).Range.Text = "Not in Place" 
       Case "5" 
        objTable.Cell(r, c).Range.Text = "Target Date/ Comments" 
      End Select 
     Else 
      If pagecountbefore<pages1.Count Then 
       pagecountbefore = pages1.Count 
       Select Case c 
        Case "1" 
         objTable.Cell(r, c).Range.Text = "PCI DSS Requirements " 
        Case "2" 
         objTable.Cell(r, c).Range.Text = "Testing Procedures " 
        Case "3" 
         objTable.Cell(r, c).Range.Text = "In Place" 
        Case "4" 
         objTable.Cell(r, c).Range.Text = "Not in Place" 
        Case "5" 
         objTable.Cell(r, c).Range.Text = "Target Date/Comments" 
       End Select 
      Else 
       'print resultrs from database 
      End If 
     End If 
    Next 
Next 
+0

我很好奇的顶部。你为什么关心网页?为什么不让Word处理分页? –

+0

因为我试图通过一个Windows应用程序模拟我公司的这份报告。每个新的页面都有表格标题,所以我想知道我该如何做到这一点 –

+1

我的意思是Word可以设置为做页眉和页脚,所以你不需要知道。 –

回答

0

您可以检查您的每一次Word文档的页数,并创建一个if从句,做什么呢。

你可以指望与网页:

myPageObject.Count //returns int 

然后每次写入数据时检查是否有新的页面。

//Writing Data 
if(pagecountbefore < myObjectPage.Count){ 
    //Do Something 
} 

或者你可以用,而条款做到这一点:

while(pagecountbefore == myObjectPage.Count){ 
     //Do Something 
    } 
+0

表的标题谢谢你的回复。然而,这笔交易让我再分一杯羹。我将有一个数据读取器运行,当它从数据库读取数据时,我将创建这个新文档,然后创建一个与查询相关的行数的大小的表。所以如果它的50行是5列(例如名字,姓氏,工作,国家,地址)和50行的表格。现在,当这是阅读,我会希望应用程序,每当它到达文档中的新页面再次打印列的标题 –

+0

(名,姓,工作,国家,地址),然后继续插入数据,直到它完成。有没有具体的方法来做到这一点? –

+0

而我通过使用此代码创建一个对象Dim objDoc As Word.Document但是,当我尝试引用它并获得计数时,没有可用的... –

0

为什么不;吨你刚才设置表格的第一行是一个标题行插入所有行后只说 objTable.Rows(1).HeadingFormat =真

如果然后将显示在每一页的表格跨越