Пользовательское клиентское приложение - нужна возможность контролировать место сохранения документов - PullRequest
2 голосов
/ 12 августа 2011

Хорошо, ТАК. Мне нужно некоторое руководство. Я прошу прощения за длину этого поста, но мне нужно предоставить некоторые детали:

У меня есть кто-то, кто заинтересован в том, чтобы я сделал для них небольшой проект. Приложение в целом представляет собой довольно простое приложение для ведения учета / документирования сотрудников, но оно довольно активно использует шаблоны Word и Lotus. Идея состоит в том, что вы выбираете «событие» сотрудника, такое как похвалы, продвижение по службе, дисциплина и т. Д., И он загружает соответствующий шаблон документа, и вы заполняете его оттуда, а позже вы можете выбрать сотрудника, просмотреть все «события, »И просматривать отдельные документы, связанные с каждым.

Таким образом, приложение должно знать, где хранятся .docs, когда пользователь закончил.

У клиента фактически есть версия v1 этого приложения (он не управляет файлами или чем-то еще, просто запускает Word / Lotus с документом, который вы хотите просмотреть в новом экземпляре, предположительно, с помощью вызова system () .) Мы не попали в подробный этап требований, но клиент и я согласны, что для этого действительно работа, некоторый контроль над тем, куда пользователь сохраняет документ. быть критическим , потому что в противном случае приложение предоставляет им новую копию документа шаблона, они «сохраняют как» где-то еще, и приложение указывает на пустую копию, которую оно им предоставило.

Очевидно, что я никак не могу придумать способ ограничения или контроля «Сохранить как» каким-либо образом, просто запустив новый экземпляр Word. Клиент имеет идею встроенного экземпляра Word / Lotus в приложение с шаблоном документа, когда вы выбираете один, но у меня есть несколько оговорок с этим:

  • Я покопался в Интернете и прочитал, какая версия Word, заимствованная у MSWORD.OLB, будет той, которая потребуется конечному пользователю?
  • Я пытался сделать пример MSDN для встраивания документа Word из здесь , но, как я привык, пример MSDN даже не компилируется.
  • Даже если я МОГУ понять, как встроить файл .doc в их приложение, я не знаю, смогу ли я контролировать использование «Сохранить как…»
  • Все это ЕЩЕ НЕ касалось Lotus (!)

Итак ... инстинктивно, я чувствую, что встроенная программа Word / Lotus должна быть больше работы, чем она стоит в конце.

Так что у меня появилось еще несколько идей.

  1. Кто-то изучает использование Office XML (и, если есть лотосный эквивалент), получает отдельно «входные данные» пользователя и каждый раз генерирует документ на лету. Я не особенно в восторге от этой идеи, но думаю, что она МОЖЕТ работать, при условии, что я просто использую старые функции, чтобы попытаться сохранить обратную совместимость.
  2. Получите пользовательские «входы» отдельно и сгенерируйте документ в HTML. Мех. Работает, очень кроссплатформенно и легко разбирается и понимается, но не очень хорошо, если вы хотите иметь возможность отправить это кому-то по электронной почте (кто отправляет по электронной почте .html? Работает, да, очень нетрадиционно, что обычному пользователю скинет их) и даже хуже, если вам нужно отправить его кому-нибудь для доработки ...
  3. Возможно, какой-то редактируемый PDF? Я знаю, что есть PDF-библиотеки, и чем больше я готовлю на них, тем больше это звучит как лучший вариант, хотя я не очень много работал с PDF-файлами и не знаю, насколько легко Встраиваемые они / какие параметры есть при их создании. Я знаю, что они могут быть инвалидами из-за спасения, у меня было это с моими кровавыми государственными налогами.

Мне нужно немного информации здесь. Вот вопросы TLDR:

  1. Является ли запуск нового экземпляра Word для каждого .doc настолько плохим, насколько я чувствую, данный пользователь может «сохранить как» документ, где бы он ни находился, а затем оставить приложение, указывающее на пустой документ?
  2. Пытается поддерживать встроенное Word как большую проблему, насколько мне хочетсяЭто / больше работы, чем стоит / может вызвать проблемы с поддержкой нескольких версий Word?(Прямая совместимость, а также выпущенные в настоящее время версии?)
  3. Что вы думаете о плане PDF?
  4. Есть ли у вас другие хорошие идеи?

1 Ответ

2 голосов
/ 12 августа 2011

Word позволяет программировать некоторые элементы управления «Сохранить» и «Сохранить как» через свою объектную модель.Все подпрограммы, закодированные в VBA и помещенные в ваш шаблон Word, будут скопированы во все документы, сгенерированные из этого шаблона.Кроме того, большинство команд меню и ленты могут быть перехвачены путем создания модуля, содержащего подпрограммы, названные для перехваченных команд.Так, например, если модуль содержит подпрограмму с именем FileSaveAs (), любой код в этой подпапке будет выполняться вместо стандартной команды File | Save As.Наконец, этот код заменит команды «Сохранить как», выполняемые с помощью нажатия клавиши, панели инструментов, меню или ленты.

Приведенный ниже код запускает диалоговое окно по заранее определенному пути, когда команда «Сохранить» или «Сохранить как»выполнено:

Sub FileSave()
ControlSaveLocation
End Sub

Sub FileSaveAs()
ControlSaveLocation
End Sub

Sub ControlSaveLocation()
Dim Directory As String
Directory = "C:\Documents\"
With Application.Dialogs(wdDialogFileSaveAs)
    .Name = Directory
    .Show
End With
End Sub

Надеюсь, это поможет.

...