Vba 将粘贴数据从其他工作簿复制到当前工作表
我基本上被卡住了。我有一个代码,允许我浏览一个文件,一旦选择该文件,它将复制该文件中的所有数据,然后允许我从当时打开的任何工作簿中选择一个工作表。一旦选择了工作表[这是我卡住的地方],我希望它将其粘贴到j7中。相反,它不会这样做,在我看来,我将每天更改文件名,因为它有当前日期。 这是我的密码:Vba 将粘贴数据从其他工作簿复制到当前工作表,vba,excel,Vba,Excel,我基本上被卡住了。我有一个代码,允许我浏览一个文件,一旦选择该文件,它将复制该文件中的所有数据,然后允许我从当时打开的任何工作簿中选择一个工作表。一旦选择了工作表[这是我卡住的地方],我希望它将其粘贴到j7中。相反,它不会这样做,在我看来,我将每天更改文件名,因为它有当前日期。 这是我的密码: Sub Macro4() ' ' Macro4 Macro ' ' Range("A1").Select Dim fileStr As String fileStr = Application.Get
Sub Macro4()
'
' Macro4 Macro
'
'
Range("A1").Select
Dim fileStr As String
fileStr = Application.GetOpenFilename()
If fileStr = "False" Then Exit Sub
Workbooks.Open fileStr
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Window.Sheets(Array("Forecast_workings")).Select{**this is where i want to be able to select a worksheet from any open workbook and it will paste the data in cell J7 of that worksheet.**
Range("J7").Select
Application.CutCopyMode = False
Range("C16:C27").Select
Selection.Copy
Range("E16").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("G16:G27").Select
Selection.Copy
Range("C16").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("O16").Select
End Sub
我可以在你的代码中看到很多错误 第一件事。您可以避免使用
。请选择
如果我理解正确,那么要获取用户在运行时选择的工作表的名称,您可以使用Application.InputBox
和Type:=8
。这将返回一个范围,从中可以使用.Parent.Name
获取工作表的名称
这就是你想要的吗
您的代码可以写为(未经测试)
使用多个工作簿时,不要使用range(),而是使用wb.range(),其中wb是用set函数定义的。
另外,activesheet也可能很棘手。最好将您正在使用的工作表命名为“随便什么”。
最后,要复制内容,请不要使用激活/选择,只需执行以下操作:
wb.sheets("whatever").range() thisworkbook.sheets("watever2").range("").
我还看到你没有使用application.enableevents=false/true,因此如果你在工作表更改部分有代码,事件将疯狂触发,你的活动表(或单元格)将疯狂更改。@Siva:这是你第二次在没有留下任何解释的情况下否决我。你正在复仇的路上。我别无选择,只能向主持人报告你。我已经拍下了你个人资料的快照。@Shiva:我看到你删除了否决票,你的分数提高了1分。这只表明是你。停止这样做,否则我会通知主持人。最后警告。
wb.sheets("whatever").range() thisworkbook.sheets("watever2").range("").