может быть неправильно сформулировал вопрос... Имя книги постоянно неизменно, а имя листа ставят как захотят (дату или имя файла), при этом в VBA он всегда идет под своим id - Лист1 Как прописать в макросе, чтоб запрос был на id - Лист1 (поменять имя на постоянное или другим способом)
может быть неправильно сформулировал вопрос... Имя книги постоянно неизменно, а имя листа ставят как захотят (дату или имя файла), при этом в VBA он всегда идет под своим id - Лист1 Как прописать в макросе, чтоб запрос был на id - Лист1 (поменять имя на постоянное или другим способом)akaDemik
возникла проблема, если менять имя в другой книге, код примерно такой: [vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction On Error GoTo ERR If oFileSystemObject.FileExists(wb.Path & "\Январь.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\Январь.xls", ReadOnly:=False, UpdateLinks:=0) ElseIf Not srcBook.Лист1 Is Nothing Then srcBook.Лист1.Name = "akaDemik" ElseIf Not srcBook.Sheet1 Is Nothing then srcBook.Sheet1.Name="akaDemik" Application.Wait Time:=Now + TimeSerial(0, 0, 2) wb.Sheets("Главная").Range("C140") = wf.Sum(srcBook.Sheets("akaDemik").Range("C16")) wb.Sheets("Главная").Range("C141") = wf.Sum(srcBook.Sheets("akaDemik").Range("C8")) wb.Sheets("Главная").Range("C142") = wf.Sum(srcBook.Sheets("akaDemik").Range("C9")) wb.Sheets("Главная").Range("C140:C142").Font.Color = vbRed srcBook.Close SaveChanges:=False End If ERR: End Sub
[/vba] сделал паузу 2 сек., думал что слишком быстро идет обработка и не успевает поменять имя...но видимо ошибка в другом
возникла проблема, если менять имя в другой книге, код примерно такой: [vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction On Error GoTo ERR If oFileSystemObject.FileExists(wb.Path & "\Январь.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\Январь.xls", ReadOnly:=False, UpdateLinks:=0) ElseIf Not srcBook.Лист1 Is Nothing Then srcBook.Лист1.Name = "akaDemik" ElseIf Not srcBook.Sheet1 Is Nothing then srcBook.Sheet1.Name="akaDemik" Application.Wait Time:=Now + TimeSerial(0, 0, 2) wb.Sheets("Главная").Range("C140") = wf.Sum(srcBook.Sheets("akaDemik").Range("C16")) wb.Sheets("Главная").Range("C141") = wf.Sum(srcBook.Sheets("akaDemik").Range("C8")) wb.Sheets("Главная").Range("C142") = wf.Sum(srcBook.Sheets("akaDemik").Range("C9")) wb.Sheets("Главная").Range("C140:C142").Font.Color = vbRed srcBook.Close SaveChanges:=False End If ERR: End Sub
[/vba] сделал паузу 2 сек., думал что слишком быстро идет обработка и не успевает поменять имя...но видимо ошибка в другомakaDemik
Сообщение отредактировал akaDemik - Пятница, 09.10.2015, 12:13
for each sh in srcBook.sheets if sh.codename ="Лист1" then srcBook.Лист1.Name = "akaDemik": exit for next
ошибка:
Цитата
Run-time error '438' Object dosen't support this property or method
код у меня получился в таком виде:
[vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction
If oFileSystemObject.FileExists(wb.Path & "\Январь.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\Январь.xls", ReadOnly:=False, UpdateLinks:=0) For Each sh In srcBook.Sheets If sh.CodeName = "Лист1" Then srcBook.Лист1.Name = "akaDemik": Exit For Next wb.Sheets("Главная").Range("C140") = wf.Sum(srcBook.Sheets("akaDemik").Range("C16")) wb.Sheets("Главная").Range("C141") = wf.Sum(srcBook.Sheets("akaDemik").Range("C8")) wb.Sheets("Главная").Range("C142") = wf.Sum(srcBook.Sheets("akaDemik").Range("C9")) wb.Sheets("Главная").Range("C140:C142").Font.Color = vbRed srcBook.Close SaveChanges:=False End If
for each sh in srcBook.sheets if sh.codename ="Лист1" then srcBook.Лист1.Name = "akaDemik": exit for next
ошибка:
Цитата
Run-time error '438' Object dosen't support this property or method
код у меня получился в таком виде:
[vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction
If oFileSystemObject.FileExists(wb.Path & "\Январь.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\Январь.xls", ReadOnly:=False, UpdateLinks:=0) For Each sh In srcBook.Sheets If sh.CodeName = "Лист1" Then srcBook.Лист1.Name = "akaDemik": Exit For Next wb.Sheets("Главная").Range("C140") = wf.Sum(srcBook.Sheets("akaDemik").Range("C16")) wb.Sheets("Главная").Range("C141") = wf.Sum(srcBook.Sheets("akaDemik").Range("C8")) wb.Sheets("Главная").Range("C142") = wf.Sum(srcBook.Sheets("akaDemik").Range("C9")) wb.Sheets("Главная").Range("C140:C142").Font.Color = vbRed srcBook.Close SaveChanges:=False End If