将信息从一个打开的工作簿复制/粘贴到另一个

时间:2018-08-06 17:25:31

标签: excel excel-vba

我又来了另一个令人困惑的问题。

过去一周,我一直在努力编写用户表格,以将单元格信息从一个工作簿表复制/粘贴到另一个工作表(两者均已打开)。这是我创建的程序的工作方式:

我有一个用户窗体,允许查看者查找在excel上创建的患者文件。通过使用列表框,该列表框显示了其特定患者文件夹中的输入患者记录,文件等。使用listbox_click(),这将打开特定的Excel文件,该文件已编码为使用Thisworkbook.application.visible = False 隐藏。现在出现第二个用户窗体,该窗体显示程序正在执行的进度,而此进度的一部分是用户窗体从一个打开的工作簿刚打开的工作簿到主工作簿< em>运行这些用户表单的工作簿。这就是即时通讯卡住的地方。

Private Sub UserForm_Activate()
    Dim SPATH As String

    ThisWorkbook.Application.Visible = False
    Workbooks("oral project3.8.xlsm").Activate

    SPATH = Sheet2.Range("C5") & Sheet2.Range("G5") & Sheet2.Range("AD9") & ".xlsm"

    Application.ScreenUpdating = False

    Application.Wait (Now + TimeValue("00:00:00"))
    UserForm1.Label1.Caption = "Loading Data..."
    UserForm1.Repaint

    Application.Wait (Now + TimeValue("00:00:02"))
    UserForm1.Label1.Caption = "Re-Configuring Data..."
    UserForm1.Repaint

        UserForm4.TextBox9.Enabled = False
        UserForm4.TextBox8.Enabled = False
        UserForm4.TextBox7.Enabled = False
        UserForm4.TextBox6.Enabled = False
        UserForm4.TextBox5.Enabled = False
        UserForm4.TextBox4.Enabled = False
        UserForm4.TextBox3.Enabled = False
        UserForm4.TextBox22.Enabled = False
        UserForm4.TextBox21.Enabled = False
        UserForm4.TextBox20.Enabled = False
        UserForm4.TextBox19.Enabled = False
        UserForm4.TextBox18.Enabled = False
        UserForm4.TextBox17.Enabled = False
        UserForm4.TextBox16.Enabled = False
        UserForm4.TextBox15.Enabled = False
        UserForm4.TextBox14.Enabled = False
        UserForm4.TextBox13.Enabled = False
        UserForm4.TextBox12.Enabled = False
        UserForm4.TextBox11.Enabled = False
        UserForm4.TextBox10.Enabled = False

        Workbooks(SPATH).Sheet2.Range("A3").Copy
        Workbooks("oral project3.8.xlsm").Sheets("PrintOut page 1").Range("A3").PasteSpecial


    Application.Wait (Now + TimeValue("00:00:04"))
    UserForm1.Label1.Caption = "Converting Results..."
    UserForm1.Repaint
    Application.Wait (Now + TimeValue("00:00:04"))
    UserForm1.Label1.Caption = "Loading Tables..."
    UserForm1.Repaint
    Application.Wait (Now + TimeValue("00:00:01"))
    UserForm1.Label1.Caption = "Loading Charts..."
    UserForm1.Repaint

    Workbooks(SPATH).Close

    ThisWorkbook.Application.Visible = False
    Workbooks("oral project3.8.xlsm").Activate

    Application.Wait (Now + TimeValue("00:00:01"))
    UserForm1.Label1.Caption = "Opening..."
    UserForm1.Repaint
    Application.Wait (Now + TimeValue("00:00:01"))

    Unload UserForm10
    UserForm8.Show
End Sub

它不断产生运行时错误“ 9”,表示在vba到达时,下标超出范围(Workbooks(SPATH).sheet2.range(“ A3”)。copy),但是我在上面使用SPATH定义了工作簿,所以我不知道可能是什么问题。

[UPDATE]- 好,所以我只是发现了错误背后的潜在原因。写出时,SPATH假定为FirstnameLastnameDate,因此以我自己为例:TimBabine08-02-2018。

但是,当我将光标放在产生错误的突出显示代码中的SPATH上时,它将读取12:00:00 am.xlsm。这可能是问题所在,因为我要从中复制的工作簿名为TimBabine08-02-2018。但是,您可能知道,我无法使用前者保存工作簿,因为excel会将其视为路径,因此为什么我要使用日期格式设置为日期的单元格:mm-dd-yyyy。但是,我仍然不知道如何解决该问题。我尝试了Sheet2.range(“ AD9”)。NumberFormat =“ mm-dd-yyyy”但SPATH出现为12:00:00 am.xlsm。

0 个答案:

没有答案