VBA宏复制数据

时间:2016-10-05 17:33:47

标签: vba excel-vba macros excel

我已经阅读了其他帖子,但我仍然对我试图应用它的具体应用程序感到不满。

问题:

我正在尝试从关闭到我当前工作簿的excel文件中复制数据。我希望能够浏览该文件,然后让宏完成剩下的工作。

解决方案尝试:

我在目标工作簿中收到错误,指出"应用程序定义或对象定义错误。"这是非常简陋的,但下面是我到目前为止。目标是我正在打开的工作簿,y是当前的工作簿,或者至少应该是!

Option Explicit
Sub getfilename()

Dim myFilePath As String
Dim target As Workbook, y As Workbook

myFilePath = Application.GetOpenFilename()

'copying
Set target = Workbooks.Open(myFilePath)

target.Sheets("Sheet1").Range("R9C2:R20C2").Copy

'pasting
Set y = ActiveWorkbook

y.Sheets("Adjustment").Cells("R57C4").PasteSpecial

'close
target.Close

End Sub

这只是这个项目的开始。我真的需要存储数据并在粘贴之前对其进行一些操作,但我试图看看我是否能够先弄明白这一点。任何和所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

RANGE对象需要A1表示法而不是R1C1表示法。 CELLS对象可以使用行号和列号(虽然你也不需要R..C ..结构。

Sub getfilename()

Dim myFilePath As String
Dim target As Workbook, y As Workbook

myFilePath = Application.GetOpenFilename()

Set y = ActiveWorkbook

'copying
Set target = Workbooks.Open(myFilePath)

'Here we're using the A1 notation
target.Sheets("Sheet1").Range("B2","B9").Copy

'Here we're using the Row & Column numbers notation
y.Sheets("Adjustment").Cells(57, 4).PasteSpecial

'close
target.Close

End Sub

此外,您实际上并不需要使用Copy和PasteSpecial方法来复制值。在这样的小型宏中,这并不算太大,但在更大的过程中,您会发现使用以下内容直接复制值更有效:     target.Range(&#34; A1&#34;,&#34; A10&#34;)。value = source.Range(&#34; A1&#34;,&#34; A10&#34;)。value < / p>

相关问题