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