2015-09-17 4 views
0

Я немного новичок в VBA, и я пытаюсь сделать Sub(), который считывает данные из другой книги Excel. Он работает, открывая книгу, читая ее, а затем я хотел бы снова закрыть книгу. В последней части, что вызывает следующее сообщение об ошибке:Workbook.Close() вызывает «Ошибка времени выполнения 9»

Run-time error '9':

Subscript out of range

я не понимаю, почему я получаю эту ошибку при попытке закрыть файл. Надеюсь, вы, ребята, можете уйти. Это работает, если я закомментировать Close() части ...

код

Option Explicit 

Sub Test() 
    Dim Path, Filename 
    Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet, transmitWorkbook As Workbook, revieveWorkbook As Workbook 

    'Define a variable for the workbook which is to recieve data 
    Set revieveWorkbook = ActiveWorkbook 

    Path = "C:\Test Folder\" 
    Filename = "FileToReadFrom.xlsx" 

    'Open workbook which is to transmit, if its not already open 
    If Is_WorkBook_Open(Path & Filename) Then 
     Set transmitWorkbook = Workbooks(Path & Filename) 
    Else 
     Set transmitWorkbook = Workbooks.Open(Path & Filename) 
    End If 

    revieveWorkbook.Sheets(1).Range("A1").Value = transmitWorkbook.Sheets(2).Range("F9").Value 
    revieveWorkbook.Sheets(1).Range("B1").Value = Month(transmitWorkbook.Sheets(2).Range("H9").Value) 

    Workbooks(Path & Filename).Close SaveChanges:=False 


End Sub 
+2

Почему вы не используете 'transmworkbook.close false'? – psychicebola

+0

Как я уже сказал, я довольно новичок в VBA. Я просто использовал документацию MSDN для закрытия книг. Однако ваше предложение работает. Однако я до сих пор не понимаю, почему мой исходный код не работает? – Noceo

+0

попробуйте использовать переменную 'transmworkbook'. – psychicebola

ответ

0

Как уже отмечался в комментариях по Jeeped, то путь не используются для закрытия книг снова. Правильный код:

Workbooks(Filename).Close SaveChanges:=False 

Спасибо всем за помощь.

Смежные вопросы