Excel VBA-从一个工作簿到另一个工作簿的数据

Excel VBA-从一个工作簿到另一个工作簿的数据,excel,vba,Excel,Vba,我可能错过了一些简单的东西。它只是没有将数据从源工作簿复制到目标工作簿,并且没有错误。源工作簿正在正常打开。目标工作簿包含此代码。两个工作簿都包含一个名为“数据”的工作表。任何帮助都将不胜感激 Sub TransferData() Dim wbTarget As Workbook Dim wbSource As Workbook Set wbSource = Workbooks.Open("C:\folder\source.xls") Set wbTarget = W

我可能错过了一些简单的东西。它只是没有将数据从源工作簿复制到目标工作簿,并且没有错误。源工作簿正在正常打开。目标工作簿包含此代码。两个工作簿都包含一个名为“数据”的工作表。任何帮助都将不胜感激

Sub TransferData()

   Dim wbTarget As Workbook
   Dim wbSource As Workbook

   Set wbSource = Workbooks.Open("C:\folder\source.xls")
   Set wbTarget = Workbooks.Open("C:\folder\target.xlsm")

   wbSource.Activate
   Sheets("Data").Select
   ActiveSheet.Range("B7").Copy

   wbTarget.Activate
   Sheets("Data").Select
   ActiveSheet.Range("A1").Paste

End Sub

不能存储值而不是复制粘贴吗

Sub TransferData()
       Dim wbTarget As Workbook
       Dim wbSource As Workbook

       Set wbTarget = Application.ActiveWorkbook
       Set wbSource = Workbooks.Open("C:\folder\source.xls")


       wbSource.Activate
       Sheets("Data").Select
       xValue = ActiveSheet.Range("B7").Value

       wbTarget.Activate
       Sheets("Data").Select
       ActiveSheet.Range("A1").Value = xValue
End Sub

我认为你的问题在于:

ActiveSheet.Range("B7").Copy
Excel不知道从哪个工作簿复制:

With wbSource
    .Activate
    .Sheets("Data").Select
    .ActiveSheet.Range("B7").Copy
End With

With wbTarget
    .Activate
    .Sheets("Data").Select
    .ActiveSheet.Range("A1").Paste
End With
请在不使用select语句的情况下尝试此代码

另外,你说代码在你的目标工作簿中

如果同时打开两个工作簿,则代码应位于第三个不相关的工作簿中

Sub TransferData()

   Dim wbTarget As Workbook
   Dim wbSource As Workbook

   Set wbSource = Workbooks.Open("C:\folder\source.xls")
   Set wbTarget = Workbooks.Open("C:\folder\target.xlsm")

   wbSource.Sheets("Data").Range("B7").Copy wbTarget.Sheets("Data").Range("A1")

   wbTarget.Close(True)
   wbSource.Close(True)

End Sub
下面是我每天用来将电子表格从一个工作簿复制到另一个工作簿的代码:

Dim TWB As Workbook
Dim CopyWB As Workbook
Set TWB = ThisWorkbook
Set CopyWB = Workbooks.Open(FName, ReadOnly:=True)
CopyWB.Sheets(TWB.Sheets("Menu").ComboBox1.Text).Cells.Copy TWB.Sheets("DataSheet").Cells
CopyWB.Close (False)

工作表(“数据”)。范围(“A1”)。选择活动工作表。Paste@Fabrizio您的意思是复制而不是选择?请参阅我的编辑-您需要指定要从哪个工作簿复制<代码>工作表(“数据”)。选择不明确,因为您有两个打开工作表数据的工作簿。添加
wbSource
wbTarget
,如我的答案所示。@Mark?!?!??wbTarget.激活;表格(“数据”)。范围(“A1”)。选择;粘贴;现在,无论最佳解决方案是什么,代码都可以正确运行user1274820@Fabrizio没有关系。我以为你想用一行(没有激活或选择)来替换整个块,这是一个更好的选择。没有意识到你只是在修改最后两行。只是尝试了一下,但没有效果。基本上也是这样。这应该相当于更简单的
wbTarget.Sheets(“数据”).Range(“A1”).Value=wbSource.Sheets(“数据”).Range(“B7”).Value
。谢谢你,用户1274820!完美的