excel为每行创建一个新工作表

时间:2015-07-02 23:30:33

标签: excel vba excel-vba

数据

第一张将用于输入数据。每行代表一张服务票据。每列将代表有关服务事件的数据,例如序列号或型号。

期望的结果

对于包含特定字段中数据的每一行(A列〜“票号”),Excel将根据模板创建新工作表(服务票证),并将相应行中的数据放入指定的单元格中。

提前感谢您提供的任何帮助。

1 个答案:

答案 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