我已经在互联网上搜索了几天,但我仍然找不到出路 . 如果我能从你们这里获得一些提示,我将非常感激 . 以下是我要做的细节:

我有一个名为A的只读工作簿,上面有一个按钮1 . 通过单击按钮1,将弹出包含列表框的用户表单和带宏的按钮2 . 结果将打印在工作簿A的表2中 .

我想要做的是,使用另一个工作簿B,调用VBA脚本打开工作簿A,然后单击按钮1激活用户窗体 . 然后,选择所有行并通过单击按钮2运行宏 . 最后,将工作表2上的值复制到工作簿B.

为了简化问题,我编写了一些代码来说明这种情况 .

在工作簿A:按钮1:

Public Sub Button1_Click()
    UserForm1.Show
End Sub

按钮2:

Private Sub Button2_Click()
    Dim y As Long, z As Long
    z = 1
    With Me.ListBox1
        For y = 0 To .ListCount
            On Error GoTo EH
            If .Selected(y) = True Then
                For i = 1 To ListBox1.ColumnCount
                    Sheets("Sheet2").Cells(z, i) = .List(y, i - 1)
                Next i
                z = z + 1
            End If
        Next y
    End With
    Unload Me

    End
EH:
    Unload Me
End Sub

用户窗体:

Private Sub UserForm_Initialize()

ListBox1.Clear


With ListBox1
    ListBox1.ColumnCount = 3
    ListBox1.ColumnWidths = "60;60;60"
    .AddItem
    .List(0, 0) = 1
    .List(0, 1) = 2
    .List(0, 2) = 3
    .AddItem
    .List(1, 0) = 4
    .List(1, 1) = 5
    .List(1, 2) = 6
End With


End Sub

在练习册B上,我执行以下操作:

Sub selectsheet()
    Application.Run Workbooks("WorksbookA").Worksheets("sheet1").Shapes("Button1").OnAction
    ListBox1.Selected(1) = True
    UserForm1.Button2_click
    Worksheets("sheet2").range("A1:B3").copy
    Workbooks("WorksbookB").Worksheets("sheet1").range("A1").select
    selection.paste
End Sub

vba看起来很好,因为我可以运行它 . 但它坚持Application.Run . 对不起,我不擅长编程,也解释这些杂乱的东西 . 但是,如果你们中的任何人能够帮助我,我将非常感激 . 谢谢 .