0

我希望在 excel 2013 中构建一个可以执行以下操作的宏:

  1. 从一个电子表格(电子表格 1)中的单个单元格复制数据。列永远不会改变,但行会因为它是一个不断更新的零件数据库。

  2. 将此数据从电子表格 1 粘贴到另一个电子表格(电子表格 2)中的相应单元格中。电子表格 2 中的单元格永远不会改变。

  3. 打印出这份文件。

  4. 对电子表格 1 中的下一行数据重复步骤 1-3。

注意:理想情况下,宏将允许用户突出显示电子表格 1 中他们想要复制到电子表格 2 中的数据部分。然后,该宏将打印出适用于电子表格 1 中每个行项目的电子表格 2 版本。

我欢迎任何人可以给我的任何建议。

当前代码:

Sub SOAutomator()
'
' SOAutomator Macro
'

'
Range("A4").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A5").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C5").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D5").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E5").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F5").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A6").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A7").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C7").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D7").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E7").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F7").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A8").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A9").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A10").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

Range("A11").Select
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("C11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("A7:D7").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("D11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("I5:K5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("E11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("E5:G5").Select
ActiveSheet.Paste
Windows("Shop Order Automator Macro.xlsm").Activate
Range("F11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Job Sheet Templates.xlsx").Activate
Range("H5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
    :=True, IgnorePrintAreas:=False
Windows("Shop Order Automator Macro.xlsm").Activate

End Sub
4

1 回答 1

0

编译正常,但未经测试...

Sub SOAutomator()

Dim shtTemplate As Worksheet
Dim shtMacro As Worksheet
Dim rw As Range


    'adjust sheet names as needed...
    Set shtTemplate = Workbooks("Job Sheet Templates.xlsx").Sheets("Sheet1")
    'assumes macro is in "macro" workbook
    Set shtMacro = ThisWorkbook.Sheets("Data")     

    Set rw = shtMacro.Rows(4) 'start on row 4

    'run until hit an empty cell in the first column...
    Do While Len(rw.Cells(1).Value) > 0

        With rw
            .Cells(1).Copy shtTemplate.Range("A5")
            .Cells(3).Copy shtTemplate.Range("A7:D7")
            .Cells(4).Copy shtTemplate.Range("I5:K5")
            .Cells(5).Copy shtTemplate.Range("E5:G5")
            .Cells(6).Copy shtTemplate.Range("H5")
        End With

        shtTemplate.PrintOut From:=1, To:=1, Copies:=1, _
                     Collate:=True, IgnorePrintAreas:=False

        Set rw = rw.Offset(1, 0) 'next row

    Loop

    ThisWorkbook.Activate

End Sub
于 2013-05-23T19:55:57.573 回答