Я немного новичок в 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
Почему вы не используете 'transmworkbook.close false'? – psychicebola
Как я уже сказал, я довольно новичок в VBA. Я просто использовал документацию MSDN для закрытия книг. Однако ваше предложение работает. Однако я до сих пор не понимаю, почему мой исходный код не работает? – Noceo
попробуйте использовать переменную 'transmworkbook'. – psychicebola