2015-09-22 65 views
-1

轉發

我正在製作一個打印運單信息的「標籤程序」。由Word中的一個表格組成,具有0頁邊距的自定義3x5英寸文檔。複製表的格式化問題

My Label

我現在有一個簡單的表格,如果你需要的副本,它會修改,從而使每次打印「件數」時加的小區之一。 1of10,2of10,3of10 .....

雖然這樣做的代碼提交了一個單獨的打印作業,每個「標籤」。這給最終用戶造成了一個問題,他們需要在打印作業之間等待5-10秒。當一次打印幾百個這樣的秒數時,這些秒數就會加起來。

糾正解決方案

要嘗試的解決這個問題,我想使表的副本,使100個標籤將被打印成一個100頁的文件。發現了幾個複製文本頁面的解決方案,但是我有一些表格,它們使事情複雜化。我發現的最接近的解決方案是:

With ActiveDocument 
    .Tables(1).Range.Copy 
    .Range.Select 
    '.Range.InsertAfter (Chr(11)) 
    Selection.Collapse wdCollapseEnd 
    Selection.Paste 
End With 

這確實讓表的完美複製但它是合併表一起。所以如果我想循環這個來創建更多的標籤,那麼每次都會將結果加倍,因爲上面的代碼只是複製第一個tabel。

要嘗試解決該問題,我在粘貼前添加了一個換行符(垂直製表符)。您將會看到上述代碼段中的註釋行。這打破了表,但增加了太多的空白。

分頁符似乎就像這裏的解決方案。雖然這些讓表格分手,但他們最終在每個標籤之間創建了一個空白頁面,我從GUI中獲得了足夠的時間清除,更不用說在VBA中。

Multiple labels with line breaks

實際問題

我怎麼能採取完美設計,以適應一個3×5英寸的網頁上,並複製它X倍的表。需要注意的是我需要能夠從程序上找到包含文本文本的單元格。目前,我可以使用這些絕對引用第一個表

ActiveDocument.Tables(1).Cell(5, 1).Range.Text 

所以,如果我有例如3個表,我需要能夠調用每個表和編輯Cell(5, 1)的文本。

如果你問

我知道這個功能最好放在實際的標籤程序像調酒師,但這些費用的錢,該公司將不會分配給我公司使用的唯一標籤內。

+0

我不認爲這應該是一個downvote。我把最基本的信息放在我可以解決的問題上。 – Matt

回答

0

正確的概念在那裏。我們需要在表格之間添加一箇中斷來解除它們之間的關聯。添加垂直標籤Chr(11)顯然不是正確的方法。

一個適當的分節符將是這裏的路線。看看MSDN,你可以看到有multiple types of section breaks。在測試之後,使用wdSectionBreakNextPage這是「下一頁的分節符」來獲得理想的結果。

基本上只需要添加一行到上面的代碼。

With ActiveDocument 
    .Tables(1).Range.Copy 
    .Range.Select 
End With 

With Selection 
    .Collapse wdCollapseEnd 
    .InsertBreak (wdSectionBreakNextPage) 
    .Paste 
End With 

我討厭使用Selection,我會考慮這樣做,但現在這並不正常工作。

由於表格不是單個單元,我們可以查詢.Tables以單獨編輯每個頁面。