数据
第一张将用于输入数据。每行代表一张服务票据。每列将代表有关服务事件的数据,例如序列号或型号。
期望的结果
对于包含特定字段中数据的每一行(A列〜“票号”),Excel将根据模板创建新工作表(服务票证),并将相应行中的数据放入指定的单元格中。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
我首先要说的是,您应该小心这一点,因为工作簿中的工作表数量有限制。但是这里有一些代码在vb中。它应该为您提供在vba中完成它的逻辑。在提到表格和单元格时会有一些区别。
您需要声明正在阅读的工作表
Dim ws As Excel.Worksheet
Set ws = ea.Worksheets(1)
它可以从图纸索引0开始,所以设置ws = ea.Worksheets(0) 或者有像Excel.Application.Activsheet
这样的东西这是循环遍历行并检查A列值的逻辑。
dim lRow as integer
Do While lRow <= ws.UsedRange.Rows.Count
If ws.Range("A" & lRow).Value <> "" Then Then
'If cell A is not blank we then call the worksheet add function.
'Pass the name you want the worksheet and the page setup arguments.
WorksheetAdd ws.Range("A" & lRow).Value, xlPaperLetter, xlPortrait
ws.name = ws.Range("A" & lRow).Value
End If
lRow = lRow + 1
ws.Range("A" & lRow).Activate
Loop
您需要一个像这样的工作表添加功能
Private Sub WorksheetAdd(szJobNumber As String, Papersize As XlPaperSize, PageOrientation As XlPageOrientation)
Dim bDisplayAlerts As Boolean
On Error GoTo ErrorHandler
'Add worksheet to workbook.
Set ws = ea.Worksheets.Add
ws.Name = szJobNumber
With ws.PageSetup
.Orientation = PageOrientation
.LeftFooter = "&D"
.CenterFooter = "&A"
.RightFooter = "Page &P of &N"
.Papersize = Papersize
End With
On Error GoTo 0
Exit Sub
ErrorHandler:
If Err.Number = 1004 Then
If MsgBox("There has been an error(#1004). Contact support. Excel is not installed or produced an error. Also, check for default printer.",vbCritical, "Information") = vbOK Then
'Unload frmPTReports
Exit Sub
End If
Else
Err.Raise Err.Number, Err.Source, Err.Description
End If
End Sub