2017-08-31 21 views
0

這裏LASTROW是我的代碼失敗運行時錯誤9,試圖獲得在新打開的文件

Dim OpenFileName As String 
Dim wb As Workbook, wb2 As Workbook 
Dim lastrow 
'Select and Open workbook 
OpenFileName = Application.GetOpenFilename(",*.csv") 
If OpenFileName = "False" Then Exit Sub 
Set wb = Workbooks(OpenFileName) 
Set wb2 = Workbooks("MasterLogFile.xlsm") 

MsgBox OpenFileName 
With wb 
'lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row 
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 
Range("A3:ME" & lastrow).Copy 
.Sheets("Log Imports").Range("A7").Paste 
End With 

失敗的設置白平衡線,我在做什麼錯?

+0

的GetOpenFilename方法顯示打開對話框,但不打開文件(它只是返回所選的文件名)。 Vityata回答說,你必須在之後打開(關閉)它。您遇到錯誤是因爲您嘗試獲取尚未打開的工作簿的引用。 –

回答

1

更改代碼,這一個:

Set wb = Workbooks.Open(OpenFileName) 

那麼,在年底這樣關閉:

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-close-method-excel

+0

現在我得到這條線上的運行時間錯誤438 lastrow = .Cells(Rows.Count,「A」)。End(xlUp).Row – DanM

+0

write'WorkSheets(1).Range(「A3:ME」& lastrow).Copy'而不是僅僅'範圍...'或者看到這裏 - https://stackoverflow.com/questions/12288588/excel-vba-error-438-object-doesnt-support-this-property-or-方法 – Vityata

+0

但我的錯誤是拉斯特羅線,當地人窗口說拉斯特羅表達式是空的。我究竟做錯了什麼? – DanM