2016-10-26 3 views
0

У меня есть сценарий, который берет данные из файла CSV и после того, как он генерирует графику. После многих обновлений Office этот скрипт завершил работу. Невозможно вернуться с версией Office.VBA Excel Sheet Метод не работает после обновлений Office

Это код:

Dim sheet 
    For Each sheet In ActiveWorkbook.Sheets 
     Select Case sheet.Name 
      Case "Archive": Sheets(sheet.Name).Delete 
      Case "Trend": Sheets(sheet.Name).Delete 
      Case "PivotTable": Sheets(sheet.Name).Delete 
     End Select 
Next 

Я получаю сообщение об ошибке последующих: «Применение определены или объект, определенный ошибка». Эта ошибка поступает на Select Case, потому что у моего объекта «лист» нет метода «Имя».

я судимый, чтобы объявить «лист», как рабочий лист

Dim sheet as Worksheet 
    For Each sheet In ActiveWorkbook.Sheets 
     Select Case sheet.Name 
      Case "Archive": Sheets(sheet.Name).Delete 
      Case "Trend": Sheets(sheet.Name).Delete 
      Case "PivotTable": Sheets(sheet.Name).Delete 
     End Select 
    Next 

На первом такта сценария у меня нет каких-либо проблемы, со вторым такта у меня есть ошибка: «Несоответствие типа»

Как я могу это решить?

Благодаря

+0

Работает ли 'ActiveWorkbook.WorkSheets' и' worksheets (sheet.name) '? –

+0

Вы пытались запустить код в режиме отладки, установив точку останова сразу после «' для каждого ... »и изучив значение' sheet'? Какую версию Office вы используете прямо сейчас? – FDavidov

ответ

1

Примечание: Это не обязательно ответ, но это слишком долго, чтобы записать в качестве комментария.

Вы можете сохранить свое кодирование намного чище и проще: я предпочитаю не использовать sheet, так как он очень похож на Sheet. Кроме того, лучше избегать использования ActiveWorkbook.

Dim Sht    As Worksheet 

For Each Sht In ActiveWorkbook.Sheets 
    Select Case Sht.Name 

     Case "Archive", "Trend", "PivotTable" 
      Sht.Delete 

    End Select 

Next Sht 
1

Sheets может содержать Chart или Worksheets объекты

затем

, если вы хотите удалить Worksheets только тогда:

Dim sheet As Worksheet 
For Each sheet In ActiveWorkbook.Worksheets '<-- loop through Worksheets collection 
    Select Case sheet.Name 
     Case "Archive": Sheets(sheet.Name).Delete 
     Case "Trend": Sheets(sheet.Name).Delete 
     Case "PivotTable": Sheets(sheet.Name).Delete 
    End Select 
Next 

, если вы хотите удалить как Worksheets и Charts затем:

Dim sheet As variant '<-- a Variant variable can be assigned both a Worksheet and a Chart object 
For Each sheet In ActiveWorkbook.Sheets '<-- loop through Worksheets and Charts collections 
    Select Case sheet.Name 
     Case "Archive": Sheets(sheet.Name).Delete 
     Case "Trend": Sheets(sheet.Name).Delete 
     Case "PivotTable": Sheets(sheet.Name).Delete 
    End Select 
Next 
Смежные вопросы