如何将我的excel-macro推广到Personal.xlsb

时间:2012-05-23 06:40:30

标签: excel-vba vba excel

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

这很好但我只能将结果放在包含宏的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

1 个答案:

答案 0 :(得分: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,因为这是使用的默认属性。我把它删除了。