프로그램에 입력 한 정보를 Microsoft Word를 사용하여 견적서를 생성하는 응용 프로그램을 만들려고합니다. 지금은 문서라는 단어에 표를 만드는 데 문제가 있습니다. 사용자는 1 ~ 4 개의 다른 제품을 인용 할 수 있습니다. 1 개의 제품이 인용되면, 6x3 테이블이 생성됩니다. 2 개의 제품이 인용되면, 2 번째 제품을 분리하는 3 번째 열이있는 6x5 테이블이 생성됩니다. 3 개 또는 4 개의 제품이 인용 된 경우 첫 번째 테이블 아래에 다른 테이블이 만들어지고 첫 번째 테이블과 동일한 규칙이 적용됩니다. 3 또는 4 제품을 인용하면 프로그램이 완벽하게 작동하지만 1 또는 2 제품을 인용하면 오류가 발생합니다.vb.net Word 문서에 테이블 추가
아직 프로그래밍에 익숙하지 않아서 코드가 매우 엉성 해 보일 수 있습니다. 내 오류는 아마 If If 문을 사용하는 방법과 관련이 있지만 여기에 나와있는 내용이 있습니다. 덕분에
Dim QuoteNumber As String
Dim RowsNeeded As Integer
QuoteNumber = NumberOfProducts.Text
'Choosing the number of Columns Needed from number of carpets quoted
Select Case QuoteNumber
Case "1"
RowsNeeded = 2
Case "2"
RowsNeeded = 5
Case "3"
RowsNeeded = 5
Case "4"
RowsNeeded = 5
End Select
Dim PricePer As String = "Product", PerLabor As String = "Labor"
Dim PShipping As String = "Shipping"
Dim PUpgrade As String = "Upgrade", PRegular As String = "Regular"
ProductTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 6, RowsNeeded)
ProductTable.Range.Font.Bold = False
ProductTable.Range.Font.Underline = False
ProductTable.Cell(1, 1).Range.Font.Underline = True 'Underline the Product
'Only 1 Product being Quoted
ProductTable.Cell(1, 1).Range.Text = cboxProductColor.SelectedItem.ToString
ProductTable.Cell(2, 1).Range.Text = PricePer
ProductTable.Cell(3, 1).Range.Text = PerLabor
ProductTable.Cell(4, 1).Range.Text = PShipping
ProductTable.Cell(5, 1).Range.Text = PUpgrade
ProductTable.Cell(6, 1).Range.Text = PRegular
ProductTable.Cell(2, 2).Range.Text = txtProductPrice.Text
ProductTable.Cell(3, 2).Range.Text = txtProductLabor.Text
ProductTable.Cell(4, 2).Range.Text = txtShippingPrice.Text
ProductTable.Cell(5, 2).Range.Text = txtUpgrade.Text
ProductTable.Cell(6, 2).Range.Text = txtRegular.Text
ProductTable.Columns.Item(1).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2
ProductTable.Columns.Item(2).Width = oWord.InchesToPoints(0.8)
'2 Products being Quoted
If RowsNeeded = 5 Then
'Spacing Column 3
ProductTable.Columns.Item(3).Width = oWord.InchesToPoints(1)
ProductTable.Cell(1, 4).Range.Font.Underline = True 'Underline the Product
ProductTable.Cell(1, 4).Range.Text = cboxProductColor2.SelectedItem.ToString
ProductTable.Cell(2, 4).Range.Text = PricePer
ProductTable.Cell(3, 4).Range.Text = PerLabor
ProductTable.Cell(4, 4).Range.Text = PShipping
ProductTable.Cell(5, 4).Range.Text = PUpgrade
ProductTable.Cell(6, 4).Range.Text = PRegular
ProductTable.Cell(2, 5).Range.Text = txtProductPrice2.Text
ProductTable.Cell(3, 5).Range.Text = txtProductLabor2.Text
ProductTable.Cell(4, 5).Range.Text = txtShippingPrice2.Text
ProductTable.Cell(5, 5).Range.Text = txtUpgrade2.Text
ProductTable.Cell(6, 5).Range.Text = txtRegular2.Text
ProductTable.Columns.Item(4).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2
ProductTable.Columns.Item(5).Width = oWord.InchesToPoints(0.8)
ProductTable.Range.ParagraphFormat.SpaceAfter = 1
End If
'Using a line break before my next table
oLineBreak = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
oLineBreak.Range.InsertParagraphBefore()
oLineBreak.Range.Text = ""
oLineBreak.Format.SpaceAfter = 0.5
oLineBreak.Range.InsertParagraphAfter()
'3 Products being quoted
'I'm creating a new table for Products 3 and 4
If NumberOfProducts.SelectedIndex = 2 Or 3 Then
Dim ProductTable2 As Word.Table
'Display the Product Style/Color
Dim QuoteNumber2 As String
Dim RowsNeeded2 As Integer
QuoteNumber2 = NumberOfProducts.Text
'Choosing the number of Columns Needed from number of Products quoted
Select Case QuoteNumber2
Case "1"
RowsNeeded2 = 1
Case "2"
RowsNeeded2 = 1
Case "3"
RowsNeeded2 = 2
Case "4"
RowsNeeded2 = 5
End Select
Dim PricePer2 As String = "Product", PerLabor2 As String = "Labor"
Dim PShipping2 As String = "Shipping"
Dim PUpgrade2 As String = "Upgrade", PRegular2 As String = "Regular"
ProductTable2 = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 6, RowsNeeded2)
ProductTable2.Range.Font.Bold = False
ProductTable2.Range.Font.Underline = False
ProductTable2.Cell(1, 1).Range.Font.Underline = True 'Underline the Product Color
'This is for the 3rd Product
ProductTable2.Cell(1, 1).Range.Text = cboxProductColor3.SelectedItem.ToString
ProductTable2.Cell(2, 1).Range.Text = PricePer2
ProductTable2.Cell(3, 1).Range.Text = PerLabor2
ProductTable2.Cell(4, 1).Range.Text = PShipping2
ProductTable2.Cell(5, 1).Range.Text = PUpgrade2
ProductTable2.Cell(6, 1).Range.Text = PRegular2
ProductTable2.Cell(2, 2).Range.Text = txtProductPrice3.Text
ProductTable2.Cell(3, 2).Range.Text = txtProductLabor3.Text
ProductTable2.Cell(4, 2).Range.Text = txtShippingPrice3.Text
ProductTable2.Cell(5, 2).Range.Text = txtUpgradeTotal3.Text
ProductTable2.Cell(6, 2).Range.Text = txtRegular3.Text
ProductTable2.Columns.Item(1).Width = oWord.InchesToPoints(1.8) 'Change width of columns
ProductTable2.Columns.Item(2).Width = oWord.InchesToPoints(0.8)
'4 Products being Quoted
If RowsNeeded2 = 5 Then
'Spacing Column 3
ProductTable2.Columns.Item(3).Width = oWord.InchesToPoints(1)
ProductTable2.Cell(1, 4).Range.Font.Underline = True 'Underline the Product Color
ProductTable2.Cell(1, 4).Range.Text = cboxProductColor4.SelectedItem.ToString
ProductTable2.Cell(2, 4).Range.Text = PricePer2
ProductTable2.Cell(3, 4).Range.Text = PerLabor2
ProductTable2.Cell(4, 4).Range.Text = PShipping2
ProductTable2.Cell(5, 4).Range.Text = PUpgrade2
ProductTable2.Cell(6, 4).Range.Text = PRegular2
ProductTable2.Cell(2, 5).Range.Text = txtProductPrice4.Text
ProductTable2.Cell(3, 5).Range.Text = txtProductLabor4.Text
ProductTable2.Cell(4, 5).Range.Text = txtShippingPrice4.Text
ProductTable2.Cell(5, 5).Range.Text = txtUpgrade4.Text
ProductTable2.Cell(6, 5).Range.Text = txtRegular4.Text
ProductTable2.Columns.Item(4).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2
ProductTable2.Columns.Item(5).Width = oWord.InchesToPoints(0.8)
ProductTable2.Range.ParagraphFormat.SpaceAfter = 1
게리, 응답 주셔서 감사하지만 행과 열이 올바른 순서로되어 있습니다. 내 If 문이 삐져 나온 것으로 밝혀졌지만 지금은 수정했습니다. 감사 –