遇到一个奇怪的问题,同是以下代码,根据目录树的的节点不同,选择不同的模版进行导出(如附件),我用“大货肩带”模版导出就没有问题,但是用“大货后工序”导出就会有下图的问题;经过一番测试,当款号(StyleNo)字符在8个以内可以正常导出,但是超过8个字符就是出现以下问题;麻烦各位老师帮忙支支招;谢谢了;根据实际按例,程序应该是执行的以下黄色底的部分?
此主题相关图片如下:123.jpg
Dim TreeNode As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim TreeNodeStr As String
Dim CurRow As Row = Tables("MainSchedule").Current '获取当前排期行;
Dim sampleTypeStr As String = CurRow("SampleType") '获取当前排期样办类型
Dim StyleStr As String = CurRow("StyleNo")
Dim rl As String = _userroles '获取当前登录用户角色
Dim Book As New XLS.Book()
Dim filepath As String '定义报表输出路径;
Dim styleToNarrow() As String = StyleStr.Split("*")
If styleToNarrow.Length > 1 Then
styleStr = styleToNarrow(1) '只获取SAP款号
End If
If rl.Contains("配料") Or rl.Contains("系统管理员") Then '根据不同的用户角色选择不同的工序模版;
If sampleTypeStr.Contains("PP") Then
If TreeNode.SelectedNode.Text <> "" Then
TreeNodeStr = TreeNode.SelectedNode.Text '获取PP办部件名称
End If
If TreeNodeStr.Contains("大货") '如果样办的部件名称包含"大货"字样,则调用大货工艺书模版;
Book = New XLS.Book(ProjectPath & "Attachments\工艺书(" & vars("ProcessPartName") & ").xls") '打开模板
Else
msgbox("你选择的不是大货工艺,请重新选择~")
Return
End If
Else
Book = New XLS.Book(ProjectPath & "Attachments\工艺书(配料中心).xls") '如果样办类型不是PP办,那么只调用正常做办的工艺书模板
End If
Else '除配料员与系统管理员外,其他用户的报表打印格式;
If sampleTypeStr.Contains("PP") Then
If TreeNode.SelectedNode.Text <> "" Then
TreeNodeStr = TreeNode.SelectedNode.Text '获取PP办部件名称
End If
If TreeNodeStr.Contains("大货") '如果样办的部件名称包含"大货"字样,则调用大货工艺书模版;
Book = New XLS.Book(ProjectPath & "Attachments\工艺书(" & vars("ProcessPartName") & ").xls") '打开模板
Else
msgbox("你选择的不是大货工艺,请重新选择~")
Return
End If
Else
Book = New XLS.Book(ProjectPath & "Attachments\工艺书(QA).xls") ''如果样办类型不是PP办,那么只调用正常做办的工艺书模板
End If
End If
'开始调用已经打印的工艺书模版设置数据导出条件 ,并生成报表;
Dim Sheet As XLS.Sheet = Book.Sheets(0)
If sampleTypeStr.Contains("PP") Then
If vars("ProcessPartName") <> "" Then '对已经打开工艺书模板设置导出的筛选条件;
Sheet(7,15).Value = "< SamplePart = '" & vars("ProcessPartName") & "'>"
End If
Else
If vars("ProcessPartName") <> "" Then '对已经打开工艺书模板设置导出的筛选条件;
If rl.Contains("配料") Or rl.Contains("系统管理员") Then
Sheet(11,18).Value = "< SamplePart = '" & vars("ProcessPartName") & "'>"
Else
Sheet(7,18).Value = "< SamplePart = '" & vars("ProcessPartName") & "'>"
End If
Else
If rl.Contains("配料") Or rl.Contains("系统管理员") Then
Sheet(11,18).Value = ""
Else
Sheet(7,18).Value = ""
End If
End If
End If
'针对是否为PP办设置不同的输出文件名;
If sampleTypeStr.Contains("PP") Then
filepath = "D:\reports\" & StyleStr & "(" & vars("ProcessPartName") & ")工艺书.xls"
Else
filepath = "D:\reports\" & CurRow("SrsNO") & "(" & vars("ProcessPartName") & ")工艺书.xls"
End If
Book.Build() '生成细节区
Book.Save(filepath)'保存工作簿
'以下代码用于设置自动换行及调整行高(对合并单元格无效)
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(filepath)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Cells
Rg.WrapText = True
Rg.EntireRow.AutoFit '自动调整行高
wb.saved = True
App.DisplayAlerts = False
App.Visible = True
If rl.Contains("配料") Then ' Or rl.Contains("系统管理员")
Ws.PrintOut(Preview:=False,ActivePrinter:="doPDF v7") '直接打印;
Else
Return
End If
App.Quit