Запустите Excel из C # и закройте его в «Сохранить» - PullRequest
4 голосов
/ 17 июня 2010

Я хочу сделать следующее с C # и Microsoft Excel:

1 - пользователь выбирает файл.

2 - Micorosft Excel показан для редактирования этого файла.

3 - Как только пользователь нажимает кнопку «Сохранить» в Excel, Microsoft Excel должен закрыться. Пользователю не нужно нажимать на выход.

Есть идеи о # 3?

С уважением, Себастьян

Ответы [ 7 ]

1 голос
/ 17 июня 2010

Вы можете иметь макрос Excel для обработки события BeforeSave, отменить сохранение, инициированное пользователем, сохранить файл в макросе, и после сохранения вы окажетесь в вашем макросе и сможете закрыть Excel.

Так может быть что-то вроде:

Private Sub myBeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not HandlingBeforeSave Then
        HandlingBeforeSave = True
        Cancel = True
        Me.Save
        Application.Quit    
    End If
End Sub

В этой статье кб описывается добавление макроса в Excel из C #.

0 голосов
/ 17 июня 2010

У меня была похожая проблема, однако я жду, пока пользователь закроет Excel.См. Мое «решение» в Автоматизация Excel: Отсутствует событие закрытия .

Мне кажется, что закрывать excel, как только пользователь нажимает «сохранить», как-то не понятно.Если вы настаиваете на событии «сохранить», вы можете захотеть наблюдать за изменением метаданных файла, как только пользователь сохранит данные (например, дату последнего изменения).

0 голосов
/ 17 июня 2010

Я не уверен, помогает ли это, но я думаю, что это близко к вашим потребностям

0 голосов
/ 17 июня 2010

Вы можете использовать VSTO для Excel.Дает вам возможность писать код C # для объектной модели Excel.Должно быть в состоянии делать именно то, что вы хотите.

Тем не менее, SWeko имеет хороший момент.Вам нужно будет выяснить, как определить, должно ли оно закрыться при сохранении.Если вы не сохраните все файлы, Excel закроется.

0 голосов
/ 17 июня 2010

Также вы можете использовать класс FileSystemWatcher, чтобы уловить момент сохранения и убить Excel на нем.Конечно, если вы знаете, где пользователь должен сохранить файл.

0 голосов
/ 17 июня 2010

Мой Interop немного ржавый, но я думаю, что было событие, которое Excel запускает, когда сохраняет файл.

Однако я думаю, что это очень опасная функция для реализации, так как, по моему опыту, взаимодействие имеет тенденцию быть немного недетерминированным :).Представьте себе, что произойдет, если обработчик сохранения активен, когда пользователь использует Excel за пределами вашего приложения - он нажимает кнопку сохранения, и Excel исчезает!

0 голосов
/ 17 июня 2010

Вы можете обработать событие Workbook BeforeSave, затем запустить таймер, который проверяет свойство Saved каждые десять секунд, и закрывать Excel, если оно true.

Вы должны проявлять осторожность при закрытии Excel, поскольку ваши пользователи будут очень злы, если вы закроете (другой) файл, над которым они работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...