我正在尝试在Java Swing桌面应用程序中开发打印功能。我需要的只是基本的打印,因此不需要外部库或其他东西。我的应用程序仅适用于Windows,因此没有什么可以阻止我使用VBS文件来生成Word(.docx)文档并仅打印它。
问题是我需要打印一张桌子。我的应用程序生成以下脚本(忽略字段,文本等)。
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
objWord.Visible = False
Set objSelection = objWord.Selection
Set objSection = objDoc.Sections(1)
objDoc.Sections(1).Footers(1).Range.ParagraphFormat.Alignment = 0
objDoc.Sections(1).Footers(1).Range.Bold = True
objDoc.Sections(1).Footers(1).Range.Text = ""
objSelection.Font.Bold = True
objSelection.Font.Underline = True
objSelection.ParagraphFormat.Alignment = 1
objSelection.Font.Size = "14"
objSelection.TypeText "I am a title"
objSelection.TypeParagraph()
objSelection.Font.Underline = False
objSelection.Font.Size = "12"
Const NUMBER_OF_ROWS = 2
Const NUMBER_OF_COLUMNS = 4
Set objRange = objDoc.Range()
objrange.Collapse wdCollapseEnd
objDoc.Tables.Add objRange, NUMBER_OF_ROWS, NUMBER_OF_COLUMNS
Set objTable = objDoc.Tables(1)
objTable.Style = "Πλέγμα Πίνακα" 'Greek MS Word needs style name on greek. "Table Grid" is the english one
objTable.Cell(1, 1).Range.Text = "Description"
objTable.Cell(1, 2).Range.Text = "Date"
objTable.Cell(1, 3).Range.Text = "Count"
objTable.Cell(1, 4).Range.Text = "Notes"
objTable.Cell(2, 1).Range.Text = "Hello there i am"+Chr(13)+"a big text"+Chr(13)+"but i am far bigger than you"
objTable.Cell(2, 2).Range.Text = "10/11/2018"
objTable.Cell(2, 3).Range.Text = "10.000"
objTable.Cell(2, 4).Range.Text = "nothing here"
objSelection.Tables(1).Select
objSelection.Collapse wdCollapseEnd
objDoc.SaveAs("C:\Users\George\AppData\Local\Temp\AAA - 13213908551013013192846.docx")
objWord.Quit
为了获得第二张图片中的表格,我从MS Word中执行了以下步骤。 右键单击表->自动调整->使用内容自动调整,然后再次右键单击表->自动调整->窗口中的自动调整
因此,我猜想通过MS Word的“创建宏”操作记录这些步骤会给我答案。它为这些行“赋予了我”:
objSelection.Tables(1).AutoFitBehavior (wdAutoFitContent)
objSelection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
我在“另存为...”之前在脚本中添加了它们,但是对该表没有任何更改。所以....我在想,我还有什么需要做的,还是我做错了什么?我对VBA不熟悉。
操作系统:Windows 10 x64
MS-Office:Microsoft Office Professional Plus 2016
编辑-答案:
objSelection.Tables(1).AutoFitBehavior (1) 'word VBA does not support enumerations
objSelection.Tables(1).Rows.Alignment = 1
答案 0 :(得分:0)
您可以尝试自己设置列的宽度。也许是这样的:
Set objTable = objDoc.Tables(1)
With objTable
.Style = "Πλέγμα Πίνακα"
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
.Columns(1).Width = 40
.Columns(2).Width = 20
.Columns(3).Width = 15
.Columns(4).Width = 25
.Cell(1, 1).Range.Text = "Description"
.Cell(1, 2).Range.Text = "Date"
.Cell(1, 3).Range.Text = "Count"
.Cell(1, 4).Range.Text = "Notes"
.Cell(2, 1).Range.Text = "Hello there i am"+Chr(13)+"a big text"+Chr(13)+"but i am far bigger than you"
.Cell(2, 2).Range.Text = "10/11/2018"
.Cell(2, 3).Range.Text = "10.000"
.Cell(2, 4).Range.Text = "nothing here"
.AutoFitBehavior (wdAutoFitWindow)
End With
您必须先尝试一下百分比,然后才能认为它看起来不错。.