0

我对vba比较陌生。这是一个用于打开访问和关闭工作簿的测试宏。我在 Win 7 和 Win XP 上使用 Excel 2007

这工作正常,但我只能将结果放在包含宏的 WorkSheet 中。为了尝试使其可重用,我使用了注释代码行并将宏放在 Personal.xlsb 文件中。我收到下标超出范围错误。我将不胜感激任何帮助?

Sub copyCount()
    Dim wb As Workbook
    Dim fname As String

    Application.ScreenUpdating = False
    fname = ActiveSheet.Name
    Set wb = Workbooks.Open("C:\Users\Deepak\Documents\OFFICE\FixedValues.xlsx", True, True)
     'With ActiveWorkbook.Worksheets("sheet1")
    With ThisWorkbook.Worksheets(fname)
        .Range("A1").Value = wb.Worksheets("common").Range("A1").Value
    End With
    wb.Close False
    Set wb = Nothing
    Application.ScreenUpdating = True
End Sub
4

1 回答 1

0

编辑

再次重读您的问题,我起初误解了。请在您的个人工作簿中尝试此代码。您注释代码中的 ActiveWorkbook 成为您打开的文件,这就是它不起作用的原因。您需要将两个工作簿都设置为变量。

Sub copyCount()
Dim wb1 As Workbook, wb2 As Workbook
Dim fname As String

Application.ScreenUpdating = False
Set wb1 = ActiveWorkbook
fname = wb1.Name
Set wb2 = Workbooks.Open("C:\Users\Deepak\Documents\OFFICE\FixedValues.xlsx", True, True)
With wb1.Worksheets("Sheet1")
'With ThisWorkbook.Worksheets(fname)
    .Range("A1") = wb2.Worksheets("common").Range("A1")
End With
wb2.Close False
Set wb2 = Nothing
Application.ScreenUpdating = True

End Sub

不相关但有趣的信息:您实际上不需要在范围末尾添加 .Value ,因为这是使用的默认属性。我在上面删除了它。

于 2012-05-23T08:01:21.617 回答