powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка Excel файлов из VB
9 сообщений из 9, страница 1 из 1
Обработка Excel файлов из VB
    #37864958
Yoph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер всем.

Есть задача: программа должна прошарить все вложенные папки (корень задан), найти в каждой папке Excel и обработать его.
Во время реализации столкнулся с 2мя проблемами:
1. при открытии Excel файла (установлен Excel 2007) появляется окно с уведомлением:
Excel encountered an error and had to remove some formatting to avoid corrupting the workbook
где есть кнопка "Ок". Программно данное окно удалось победить добавив:
Код: vbnet
1.
On Error Resume Next : objWorkBook = objExcel.Workbooks.Open(pFile, True)


Но в этом случае обработать файл не получается, т.к. не проходит условие Err.Number = 0 (обрабатываю другие ошибки)

2. уходя от первой ошибки, столкнулся с новой:
A document with the name 'Filename.xls' is alredy open. You cannot open two documents with the same name, even if the documents are in different folders.
Алгоритм следующий:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub vbFolder(ByVal pFolder)
	'рекурсивный обход папок и поиск файлов
	'если Excel найден - идёт его обработка
	vbFile(vXlLoadFile)
End Sub

Public Sub vbFile(pFile)
	objWorkbook = objExcel.Workbooks.Open(pFile, True)
	'код обработки
	objExcel.objWorkbook.Close()
	objExcel.objWorkbook = Nothing
End Sub

Public Sub Main()
	objExcel = CreateObject("Excel.Application")
	objExcel.EnableEvents = True
	objExcel.DisplayAlerts = False
	vbFolder(rootPath)
	objExcel.Quit()
	objExcel = Nothing
End Sub


Вероятно, я как-то неправильно закрываю файл, что он остается висеть в памяти?

Соответственно, необходима ваша помощь для решения данной проблемы.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37864963
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
SET	objExcel = CreateObject("Excel.Application")
	objExcel.EnableEvents = True
	objExcel.DisplayAlerts = False
	vbFolder(rootPath)
	objExcel.Quit
SET	objExcel = Nothing
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37864965
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
SET	objWorkbook = objExcel.Workbooks.Open(pFile, True)
	'код обработки
	objWorkbook.Close
SET	objWorkbook = Nothing
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37865209
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoph,

Пользуйся On Error Resume Next, только если тебе действительны нужны приключения (или если ты передаешь код ошибки в процедуру - клиент, который получает и обрабатывает эту ошибку). Просто так On Error Resume Next писать - это все равно что закрывать от страха глаза при быстрой езде, будучи при этом водителем.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37865216
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YophOn Error Resume Next : objWorkBook = objExcel.Workbooks.Open(pFile, True)Хуже этой записи ничего не видел. Надеюсь, вы в курсе, что Resume Next распространяется не только на строчку objWorkBook=?

YophНо в этом случае обработать файл не получается, т.к. не проходит условие Err.Number = 0 (обрабатываю другие ошибки)Вообще-то у всех ошибок номера разные. select case Err.Number и все такое.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37865483
Yoph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyYophOn Error Resume Next : objWorkBook = objExcel.Workbooks.Open(pFile, True)Хуже этой записи ничего не видел. Надеюсь, вы в курсе, что Resume Next распространяется не только на строчку objWorkBook=?
В курсе. Данная строка кода была добавлена только, чтобы проверить уберётся ли окно с предупреждением. После проверки она была убрана.
AntonariyYophНо в этом случае обработать файл не получается, т.к. не проходит условие Err.Number = 0 (обрабатываю другие ошибки)Вообще-то у всех ошибок номера разные. select case Err.Number и все такое.
Я знаю. Но вопрос не в этом.

Вопрос как правильно закрыть открытые ранее файлы Excel. Надо ли постоянно делать
Код: vbnet
1.
2.
objExcel.Quit()
objExcel = Nothing


либо можно избежать постоянного закрытия приложения и лишь закрывать книги (тут вопрос тогда, что я делают не так)?
Либо как программно закрыть\скрыть\нажать "Ок" в окне с предупреждением о том, что некоторое форматирование было убрано.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37865537
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВопрос как правильно закрыть открытые ранее файлы Excel.
Код: vbnet
1.
objWorkbook.Close

objExcel.Quit() когда все файлы закрыты.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37865546
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Код: vbnet
1.
objWorkbook.Close(false)


На всякий случай, чтобы не было лишних вопросов.
...
Рейтинг: 0 / 0
Обработка Excel файлов из VB
    #37867726
Yoph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-dukeAntonariy,

Код: vbnet
1.
objWorkbook.Close(false)


На всякий случай, чтобы не было лишних вопросов.
Спасибо. Именно это нужно было. :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка Excel файлов из VB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]