2012-05-23 59 views
0

我對vba相對較新。這是一個測試宏,用於打開訪問權限並關閉工作簿。我在Win 7上使用Excel 2007 & Win XP如何概括我的Excel宏從Personal.xlsb工作

工作正常,但我只能將結果放在包含該宏的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

你有沒有交叉在Ozgrid或其他論壇上發佈這個問題?如果是,請提及您問題中的所有鏈接。 –

回答

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,因爲這是所使用的默認屬性。我在上面刪除它。