Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поменять имя Листа - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Поменять имя Листа
akaDemik Дата: Четверг, 08.10.2015, 18:07 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Присылают файл, где имя листа постоянно меняют, прописан макрос, который с этого листа должен собрать информацию.
В VBA он всегда Лист1
 
Ответить
СообщениеПрисылают файл, где имя листа постоянно меняют, прописан макрос, который с этого листа должен собрать информацию.
В VBA он всегда Лист1

Автор - akaDemik
Дата добавления - 08.10.2015 в 18:07
RAN Дата: Четверг, 08.10.2015, 18:10 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
И чё?
[vba]
Код
Лист1.Name="akaDemik"
[/vba]
Расширенный вариант
[vba]
Код
If Not Лист1 Is Nothing then
Лист1.Name="akaDemik"
ElseIf Not Sheet1 Is Nothing then
Sheet1.Name="akaDemik"
End If
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 08.10.2015, 18:14
 
Ответить
СообщениеИ чё?
[vba]
Код
Лист1.Name="akaDemik"
[/vba]
Расширенный вариант
[vba]
Код
If Not Лист1 Is Nothing then
Лист1.Name="akaDemik"
ElseIf Not Sheet1 Is Nothing then
Sheet1.Name="akaDemik"
End If
[/vba]

Автор - RAN
Дата добавления - 08.10.2015 в 18:10
akaDemik Дата: Четверг, 08.10.2015, 20:42 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010

может быть неправильно сформулировал вопрос...

Имя книги постоянно неизменно, а имя листа ставят как захотят (дату или имя файла), при этом в VBA он всегда идет под своим id - Лист1
Как прописать в макросе, чтоб запрос был на id - Лист1 (поменять имя на постоянное или другим способом)
 
Ответить
Сообщение
может быть неправильно сформулировал вопрос...

Имя книги постоянно неизменно, а имя листа ставят как захотят (дату или имя файла), при этом в VBA он всегда идет под своим id - Лист1
Как прописать в макросе, чтоб запрос был на id - Лист1 (поменять имя на постоянное или другим способом)

Автор - akaDemik
Дата добавления - 08.10.2015 в 20:42
akaDemik Дата: Четверг, 08.10.2015, 20:53 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, в принципе Вы уже ответили, это подходит
[vba]
Код


If Not Лист1 Is Nothing then
Лист1.Name="akaDemik"
ElseIf Not Sheet1 Is Nothing then
Sheet1.Name="akaDemik"
End If
[/vba]
 
Ответить
СообщениеRAN, в принципе Вы уже ответили, это подходит
[vba]
Код


If Not Лист1 Is Nothing then
Лист1.Name="akaDemik"
ElseIf Not Sheet1 Is Nothing then
Sheet1.Name="akaDemik"
End If
[/vba]

Автор - akaDemik
Дата добавления - 08.10.2015 в 20:53
akaDemik Дата: Пятница, 09.10.2015, 11:57 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
возникла проблема, если менять имя в другой книге, код примерно такой:
[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 - Пятница, 09.10.2015, 12:13
 
Ответить
Сообщениевозникла проблема, если менять имя в другой книге, код примерно такой:
[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
Дата добавления - 09.10.2015 в 11:57
RAN Дата: Пятница, 09.10.2015, 12:34 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
for each sh in srcBook.sheets
if sh.codename ="Лист1" then srcBook.Лист1.Name = "akaDemik": exit for
next
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
for each sh in srcBook.sheets
if sh.codename ="Лист1" then srcBook.Лист1.Name = "akaDemik": exit for
next
[/vba]

Автор - RAN
Дата добавления - 09.10.2015 в 12:34
akaDemik Дата: Пятница, 09.10.2015, 13:01 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
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

End Sub
[/vba]
 
Ответить
Сообщение
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

End Sub
[/vba]

Автор - akaDemik
Дата добавления - 09.10.2015 в 13:01
RAN Дата: Пятница, 09.10.2015, 13:32 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Отвлекся :)
[vba]
Код
then sh.Name = "akaDemik"
[/vba]

[p.s.]А еще проще - обращаться не по имени, а по индексу
[vba]
Код
Sheets(1)
[/vba]
Я так думаю, этот лист всегда первый.[/p.s.]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 09.10.2015, 13:40
 
Ответить
СообщениеОтвлекся :)
[vba]
Код
then sh.Name = "akaDemik"
[/vba]

[p.s.]А еще проще - обращаться не по имени, а по индексу
[vba]
Код
Sheets(1)
[/vba]
Я так думаю, этот лист всегда первый.[/p.s.]

Автор - RAN
Дата добавления - 09.10.2015 в 13:32
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!