Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将粘贴数据从其他工作簿复制到当前工作表_Vba_Excel - Fatal编程技术网

Vba 将粘贴数据从其他工作簿复制到当前工作表

Vba 将粘贴数据从其他工作簿复制到当前工作表,vba,excel,Vba,Excel,我基本上被卡住了。我有一个代码,允许我浏览一个文件,一旦选择该文件,它将复制该文件中的所有数据,然后允许我从当时打开的任何工作簿中选择一个工作表。一旦选择了工作表[这是我卡住的地方],我希望它将其粘贴到j7中。相反,它不会这样做,在我看来,我将每天更改文件名,因为它有当前日期。 这是我的密码: Sub Macro4() ' ' Macro4 Macro ' ' Range("A1").Select Dim fileStr As String fileStr = Application.Get

我基本上被卡住了。我有一个代码,允许我浏览一个文件,一旦选择该文件,它将复制该文件中的所有数据,然后允许我从当时打开的任何工作簿中选择一个工作表。一旦选择了工作表[这是我卡住的地方],我希望它将其粘贴到j7中。相反,它不会这样做,在我看来,我将每天更改文件名,因为它有当前日期。 这是我的密码:

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("").