首页 > 解决方案 > 使用文本框中的文本自动/合并来自许多 Excel 工作簿的数据

问题描述

我从我的前任那里继承了一组 Excel 文件。这些文件由一个包含许多工作表的表单组成,其中的部分已由其他用户完成。来自用户的输入包括输入到单元格和文本框中的数据。有很多数据和带有文本框的不同表格,我想将它们总结成一种我可以轻松使用的格式。

我对 Excel 中的宏不是很熟悉,但我捏造了一个可以在空的、打开的 Excel 文档上运行的宏:

  1. 询问我要打开哪个文件
  2. 获取“数据”表并将其复制并粘贴到打开的活动工作簿中
  3. 关闭我从中获取数据的文件

这涵盖了输入到单元格中的所有数据。

我还想用文本框中的文本填充新工作簿中的一些单元格。所以最后我在一张纸上为每个用户汇总了所有数据。但是,我在网上寻找任何解决方案以成功地从文本框中收集信息时遇到问题。

我已经根据该线程的建议尝试了解决方案,但我收到错误 Run-time error '438': Object doesn't support this property or method : VBA/Macro code to get the value of textbox

Sub ffs()
    Dim wbkS As Workbook
    Dim wshS As Worksheet
    Dim wshT As Worksheet
    Dim strFile As String
    With Application.FileDialog(1) ' msoFileDialogOpen
        .Filters.Clear
        .Filters.Add "Excel workbooks", "*.xls;*.xlsx;*.xlsb;*.xlsm"
    .InitialFileName = "D:\Macro testing area"
        If .Show Then
            strFile = .SelectedItems(1)
        Else
            MsgBox "No file selected", vbCritical
            Exit Sub
        End If
    End With
    Application.ScreenUpdating = False
    Set wshT = ActiveSheet
    Set wbkS = Workbooks.Open(Filename:=strFile, ReadOnly:=True)
    Set wshS = wbkS.Worksheets("Data")
    Set wshS1 = wbkS.Worksheets("Section 1")
    wshT.Range("A1:L88").Value = wshS.Range("A1:L88").Value
    ' Optional: close source workbook
    wbkS.Close SaveChanges:=False
    Application.ScreenUpdating = True
End Sub

理想情况下,我希望在文件关闭之前在这行代码下面添加一些额外的代码:

wshT.Range("A1:L88").Value = wshS.Range("A1:L88").Value

我想将 wbkS.Worksheets("Section 1") 中的文本框值添加到指定的单元格中。但是我的尝试没有成功,例如:

wshT.Range("J3").Value = wshS1.TextBox1_1.Value

我假设我在宏的工作方式上存在逻辑缺陷,但我无法找到解决方案。任何建议将不胜感激。

标签: excelvbaautomationtextbox

解决方案


推荐阅读