1
我希望做到以下几点:VBA导入数据 - 变量工作表的名称
- 命令按钮在目标工作表打开源文件(对话框,选择其中之一)
- 找到源文件
- 复制单元格范围内 - 的工作表(“性能”总是相同的名称)(实际上是几个不同的范围的 - 要添加)
- 确保目的地片(其具有相同的名称作为细胞I2在源表中)存在
- 粘贴值到目标工作表相同的范围
- 关闭源文件
我有这个至今:
Private Sub CommandButton1_Click()
Dim SourceFile As String
Dim SourceBook As Workbook
Dim DestinationBook As Workbook
Dim desiredName As String
Set DestinationBook = ThisWorkbook
SourceFile = Application.GetOpenFilename(fileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Set SourceBook = Workbooks.Open(SourceFile)
SourceBook.Sheets("Performance").Activate
desiredName = ActiveSheet.Range("I2")
Application.CutCopyMode = True
SourceBook.ActiveSheet.Range("E25:I64").Copy
DestinationBook.Activate
If WorksheetExists = False Then
MsgBox "Couldn't find " & desiredName & " sheet within destination workbook"
Call SourceBook.Close(False)
Exit Sub
Else
Range("E25:I64").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Call SourceBook.Close(False)
End If
End Sub
Function WorksheetExists() As Boolean
Dim sh As Object
For Each sh In DestinationBook.Worksheets
If sh.Name = desiredName Then WorksheetExists = True: sh.Activate
Exit For
Next
End Function
我得到运行时错误“424”:必选对象
任何建议...?
在此先感谢!
谢谢托尼,重点是虽然我希望它自己确保正确的目标工作表是活动的。正确的目标工作表是一个名称与源文件中单元格I2的内容相同的文件夹。从技术上讲,它应该回到正确的目的地表单中,因为这是按钮所在的位置,但我想确保它不会意外更改 - 目标文件中有多个表单,并且必须执行相同的操作为每个单独执行。它们的格式都完全一样,所以很容易混淆 –
好吧,我已经添加了更多代码来解决这个问题。希望能帮助到你。 –
几乎在那里,但它似乎正在寻找刚刚打开的源工作簿中的工作表 - 它不会找到它。为了说明,单元格I2位于名为“性能”的源工作簿和源表单中,目标文件中的目标表单与源表单中I2的内容相同。说源表单说I2中的STACK,我希望它在目标工作簿中找到名为STACK的工作表并粘贴在那里。 –