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

Вход

Регистрация

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

 

= Мир MS Excel/Run-time error 91 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Run-time error 91 (Макросы/Sub)
Run-time error 91
Ефим Дата: Пятница, 04.04.2014, 06:52 | Сообщение № 1
Группа: Гости
Уважаемые форумчане, помогите разобраться с проблемой.
Для автоматического сохранения файлов Excel в формате .txt, соорудил код в VBA.
Код вроде-бы простой, из поля берется строка, содержащая путь к файлу, далее каждый лист в файле сохраняется в формате .txt.
Все бы ничего, но повторное выполнение данного кода происходит с ошибкой.
Run-time error 91
Object variable or with block variable not set
в выделенной строке

[vba]
Код
Private Sub Сохранение_Click()
Dim Xls As Excel.Application
Dim Sh As Worksheet
Dim i As Long
Dim StrXls As String
Dim Quant As Long

With Application.CurrentProject
StrXls = File_String
Set Xls = New Excel.Application
Xls.Visible = True
Xls.Workbooks.Open (StrXls)
Quant = Len(StrXls)
Quant = Quant - 4
i = 0
For Each Sh In ActiveWorkbook.Worksheets 'Строка, в которой выходит ошибка
Sh.Activate
Xls.ActiveSheet.SaveAs FileName:=Left(StrXls, Quant) & i, FileFormat:=xlTextWindows
i = i + 1
Next Sh
ActiveWorkbook.Close SaveChanges:=False
Xls.Quit
End With
End Sub
[/vba]
 
Ответить
СообщениеУважаемые форумчане, помогите разобраться с проблемой.
Для автоматического сохранения файлов Excel в формате .txt, соорудил код в VBA.
Код вроде-бы простой, из поля берется строка, содержащая путь к файлу, далее каждый лист в файле сохраняется в формате .txt.
Все бы ничего, но повторное выполнение данного кода происходит с ошибкой.
Run-time error 91
Object variable or with block variable not set
в выделенной строке

[vba]
Код
Private Sub Сохранение_Click()
Dim Xls As Excel.Application
Dim Sh As Worksheet
Dim i As Long
Dim StrXls As String
Dim Quant As Long

With Application.CurrentProject
StrXls = File_String
Set Xls = New Excel.Application
Xls.Visible = True
Xls.Workbooks.Open (StrXls)
Quant = Len(StrXls)
Quant = Quant - 4
i = 0
For Each Sh In ActiveWorkbook.Worksheets 'Строка, в которой выходит ошибка
Sh.Activate
Xls.ActiveSheet.SaveAs FileName:=Left(StrXls, Quant) & i, FileFormat:=xlTextWindows
i = i + 1
Next Sh
ActiveWorkbook.Close SaveChanges:=False
Xls.Quit
End With
End Sub
[/vba]

Автор - Ефим
Дата добавления - 04.04.2014 в 06:52
KuklP Дата: Пятница, 04.04.2014, 10:33 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Регмистрируйтесь, выкладывайте файл-пример.
P.S. и оформляйте коды тегом, значок # на панели ввода.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Пятница, 04.04.2014, 10:33
 
Ответить
СообщениеРегмистрируйтесь, выкладывайте файл-пример.
P.S. и оформляйте коды тегом, значок # на панели ввода.

Автор - KuklP
Дата добавления - 04.04.2014 в 10:33
Ефим Дата: Пятница, 04.04.2014, 11:01 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Выкладываю файл, о котором писал выше.
 
Ответить
СообщениеВыкладываю файл, о котором писал выше.

Автор - Ефим
Дата добавления - 04.04.2014 в 11:01
Ефим Дата: Пятница, 04.04.2014, 11:02 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вот
К сообщению приложен файл: __.rar (27.5 Kb)
 
Ответить
СообщениеВот

Автор - Ефим
Дата добавления - 04.04.2014 в 11:02
KuklP Дата: Пятница, 04.04.2014, 11:08 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ну, Аксесса у меня нет. И наверное логично файлы Аксесса обсуждать на соответсвующем форуме(подфоруме). Но дело Ваше.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНу, Аксесса у меня нет. И наверное логично файлы Аксесса обсуждать на соответсвующем форуме(подфоруме). Но дело Ваше.

Автор - KuklP
Дата добавления - 04.04.2014 в 11:08
Hugo Дата: Пятница, 04.04.2014, 11:24 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
ActiveWorkbook вероятно не в Xls?
И тогда в итоге сохраняется несколько раз один и тот же лист...
А зачем тут Application.CurrentProject? Или я чего-то не знаю?

P.S. А, так я не знал, что это не в Экселе происходит... Тогда пас, качать не буду...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеActiveWorkbook вероятно не в Xls?
И тогда в итоге сохраняется несколько раз один и тот же лист...
А зачем тут Application.CurrentProject? Или я чего-то не знаю?

P.S. А, так я не знал, что это не в Экселе происходит... Тогда пас, качать не буду...

Автор - Hugo
Дата добавления - 04.04.2014 в 11:24
Gustav Дата: Пятница, 04.04.2014, 12:26 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
По ходу там после первого запуска остается экземпляр Excel висеть в диспетчере задач. Похоже, в этом дело. И даже Set xls = Nothing его не выключает. Это, так сказать, направление для поисков. Больше ничего сказать не могу.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПо ходу там после первого запуска остается экземпляр Excel висеть в диспетчере задач. Похоже, в этом дело. И даже Set xls = Nothing его не выключает. Это, так сказать, направление для поисков. Больше ничего сказать не могу.

Автор - Gustav
Дата добавления - 04.04.2014 в 12:26
Ефим Дата: Пятница, 04.04.2014, 12:53 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Gustav, Вы совершенно правы. В диспетчере задач остается экземпляр Excel. Может подскажите, как убить его программно?
 
Ответить
СообщениеGustav, Вы совершенно правы. В диспетчере задач остается экземпляр Excel. Может подскажите, как убить его программно?

Автор - Ефим
Дата добавления - 04.04.2014 в 12:53
Gustav Дата: Пятница, 04.04.2014, 17:26 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Может подскажите, как убить его программно?

Могу посоветовать несколько иной путь. Не надо на каждое "Cохранить" создавать новую сессию Excel. Достаточно сделать это один раз при самом первом нажатии на кнопку "Cохранить". Для этого оберните создание экземпляра IFом проверки существования объекта:
[vba]
Код
If Xls Is Nothing Then
      Set Xls = New Excel.Application
End If
[/vba]
Сам объект следует вынести из Private Sub Сохранение_Click() в область определений формы (вверху модуля формы, до всех подпрограмм):
[vba]
Код
'Option Compare Database

Dim Xls As Excel.Application
[/vba]
Ну и наконец закрывать Excel тоже только один раз - при закрытии формы:
[vba]
Код
Private Sub Form_Close()
      Xls.Quit
      Set Xls = Nothing
End Sub
[/vba]
Если раздражает наличие пустого Excel во время работы формы, то можно его скрывать в определенные моменты при помомщи свойства Xls.Visible.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 04.04.2014, 17:27
 
Ответить
Сообщение
Может подскажите, как убить его программно?

Могу посоветовать несколько иной путь. Не надо на каждое "Cохранить" создавать новую сессию Excel. Достаточно сделать это один раз при самом первом нажатии на кнопку "Cохранить". Для этого оберните создание экземпляра IFом проверки существования объекта:
[vba]
Код
If Xls Is Nothing Then
      Set Xls = New Excel.Application
End If
[/vba]
Сам объект следует вынести из Private Sub Сохранение_Click() в область определений формы (вверху модуля формы, до всех подпрограмм):
[vba]
Код
'Option Compare Database

Dim Xls As Excel.Application
[/vba]
Ну и наконец закрывать Excel тоже только один раз - при закрытии формы:
[vba]
Код
Private Sub Form_Close()
      Xls.Quit
      Set Xls = Nothing
End Sub
[/vba]
Если раздражает наличие пустого Excel во время работы формы, то можно его скрывать в определенные моменты при помомщи свойства Xls.Visible.

Автор - Gustav
Дата добавления - 04.04.2014 в 17:26
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Run-time error 91 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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