2013-01-22 91 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 =真

如果然後將顯示在每一頁的表格跨越