Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макросы Word - в код VisualFoxPro 6.0 / 24 сообщений из 24, страница 1 из 1
02.11.2010, 12:21
    #36933350
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
Проблема такая: мне надо в VFP открыть вордовский файл и сделать защиту его от несанкционированного редактирования. Чтобы мог его редактировать только создатель файла. Помогите пожалуйста новичку. Я макросы-то сделала, но поскольку синтаксис у VFP и VBA разный, а документации нет, то и тыкаюсь как слепой котенок. Хватило меня только на то, чтобы открыть файл и выделить его весь. А как написать код защиты, не могу понять.
...
Рейтинг: 0 / 0
02.11.2010, 12:54
    #36933454
Макросы Word - в код VisualFoxPro 6.0
...
Рейтинг: 0 / 0
02.11.2010, 12:54
    #36933456
Макросы Word - в код VisualFoxPro 6.0
я так понимаю под несанкционированным редактированием понимается установить пароль на объект VBAProject программно?
...
Рейтинг: 0 / 0
02.11.2010, 15:50
    #36934149
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZaus,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LOCAL loWord as Word.Application, loDocument as Word.Document

loWord = CREATEOBJECT("Word.Application")
loWord.Visible = .T.
loDocument = loWord.Documents.Open("FullFileNamePath")

loDocument.SaveAs("FileName","FileFormat","LockComments", "Password")
...
Рейтинг: 0 / 0
03.11.2010, 11:40
    #36935646
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
КонецЦикла, нет, мне нужно, чтобы документ Ворда или Экселя нельзя было отредактировать остальным пользователям. Я пишу АРМ "Документооборот".
...
Рейтинг: 0 / 0
03.11.2010, 11:41
    #36935651
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
КонецЦикла, я забыла сказать, что мне нужен код на Visual FoxPro 6.0.
...
Рейтинг: 0 / 0
03.11.2010, 19:31
    #36937117
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZausКонецЦикла, я забыла сказать, что мне нужен код на Visual FoxPro 6.0.
Синтаксис не зависит от версии FoxPro, поскольку требуется использовать команды собственно Word.

Во-первых, Вы должны понять, что абсолютной защиты Вы сделать не сможете. Если другие пользователи могут хотя бы просматривать документ, то они при наихудшем раскладе смогут просто ручками переписать данные в новый документ, а потом подсунуть этот новый документ вместо старого.

А поэтому, во-вторых, не стоит пытаться делать что-то сильно "навороченное". Простейший вариант защиты - это воспользоваться пунктом меню "Сервис" \ "Защитить документ"

Записываете макрос. Затем открываете записанный макрос, выделяете ключевое слово "protect" и нажимаете клавишу F1. Появляется справка по используемому методу. В данном случае полный синтаксис

Код: plaintext
expression.Protect(Type, NoReset, Password, UseIRM, EnforceStyleLock)

В качестве Expression, как видно из кода макроса, выступает текущий документ. Как видно из документации, приведенный синтаксис ну очень похож на синтаксис FoxPro. Вот его и используйте. Т.е. "как есть"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
* Создаем экземпляр Word
loWord = CREATEOBJECT("Word.Application")

* Делаем его видимым для отладки
loWord.Visible = .T.

* Открываем нужный документ
loDocument = loWord.Documents.Open("C:\MyFolder\MyFile.doc")

* Накладываем защиту
#DEFINE wdAllowOnlyReading  3 
loDocument.Protect(wdAllowOnlyReading, , "Password")

Как видите, те параметры, которые не нужны и по справке не обязательны для указания, просто пропускаются (лишняя запятая в середине и не указаны последние параметры).
...
Рейтинг: 0 / 0
03.11.2010, 19:57
    #36937150
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
Кстати, если файл открывается из среды FoxPro, то может быть для "левых" пользователей просто открывать их в режиме Read-Only?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
* Создаем экземпляр Word
loWord = CREATEOBJECT("Word.Application")

* Делаем его видимым для отладки
loWord.Visible = .T.

* Открываем нужный документ
loDocument = loWord.Documents.Open("C:\MyFolder\MyFile.doc", , .T.)

Третий параметр в методе Open() как раз и управлет тем в каком режиме Read-Only открывать документ

Можно также защитить весь файл паролем и вписывать пароль в метод Open(). Это 5 параметр
...
Рейтинг: 0 / 0
08.11.2010, 13:37
    #36942196
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ВладимирМ,
спасибо Вам большое! Я обязательно попробую и напишу, получилось или нет. Сенкс!
...
Рейтинг: 0 / 0
09.11.2010, 13:09
    #36944658
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ВладимирМ

* Накладываем защиту
#DEFINE wdAllowOnlyReading 3
loDocument.Protect(wdAllowOnlyReading, , "Password")

Я попробовала этот способ. Все получается прекрасно, только вот теперь не могу распаролить файл. )))
Где в этом коде заложено, каким паролем мы защитили данный документ?
А, кстати, применив Ваши рекомендации относительно ReadOnly, я эффекта этого не получила. То есть пользователь смог отредактировать файл.
...
Рейтинг: 0 / 0
11.11.2010, 10:31
    #36948786
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
Вообще-то, Вам в любом случае стоит поучится использовать справку VBA в Office. Ну, и самостоятельно экспериментировать.

ElenaZausЯ попробовала этот способ. Все получается прекрасно, только вот теперь не могу распаролить файл. )))
Где в этом коде заложено, каким паролем мы защитили данный документ?
Повторно перечитайте мой топик, где я приводил код. Там же приведена цитата из HELP VBA по данной команде. Извините, но где в приведенном коде указан пароль, Вы должны определить сами. Это не сложно.

Как "распаролить"? Ну, очевидно, кроме команды protect() должна быть противоположная по смыслу команда. И она действительно есть. Называется unprotect().

Синтаксис в VBA имеет вид

Код: plaintext
expression.UnProtect(Password)

Надеюсь, сможете "перевести" в синтаксис FoxPro по аналогии с командой protect(). Т.е. логика редактирования будет такая: открываете файл, снимаете защиту, редактируете, заново устанавливаете защиту.

ElenaZausА, кстати, применив Ваши рекомендации относительно ReadOnly, я эффекта этого не получила. То есть пользователь смог отредактировать файл.
Отредактировать-то он смог, а вот сохранить в этот же файл - не получится. Только в другой файл. Попробуйте после редактирования открытого таким образом файла нажать "Сохранить". Сразу поймете в чем дело.
...
Рейтинг: 0 / 0
12.11.2010, 12:09
    #36951401
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
Да, согласна. Я когда написала сообщение о том, что не могу распаролить, тогда тока заметила, что пароль - "Password". Посмеялась над собой! Извините меня.
...
Рейтинг: 0 / 0
13.11.2010, 07:36
    #36953218
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ВладимирМ, здравствуйте! Спасибо Вам огромное за помощь по Ворду. С Экселем я справилась сама.:) Просто по аналогии сделала и все получилось ReadOnly. :)
Вы знаете, у меня еще маленькая проблемка примерно на эту же тему. Документации я не нашла, а мне надо теперь из VisualFoxPro открыть jpg-файл, причем не просто открыть, а еще и только для чтения. Или его нельзя и так никак отредактировать? Не поделитесь ли со мной своим богатым опытом? Я буду очень признательна.
...
Рейтинг: 0 / 0
13.11.2010, 07:46
    #36953225
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZaus, кидаем на форму Image. У него есть св-во Picture. Редактировать не получится :)
...
Рейтинг: 0 / 0
13.11.2010, 07:54
    #36953232
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZausДокументации я не нашла, а мне надо теперь из VisualFoxPro открыть jpg-файл, причем не просто открыть, а еще и только для чтения. .
Если хранится в папке jpg файл, то наверно те, кто пишет - им полный доступ к папке. А кто смотрит - только для чтения. Это так скажем 100% защита. Потому как в фоксе вы откроете jpg только для чтения, а пользователь может сам залесть в папку и поредактировать его.
На счет документооборота, не знаю, может все документы/файлы в базе данных держать нужно.
Ну, типа пользователь выбирает запись с нужным документом, который хранится в записи.
Сохраняется во временную папку, оттуда уже открывается фоксом.
А на базе данных уже проще разграничить доступ.
Ну это я просто своими мыслями поделился.
...
Рейтинг: 0 / 0
13.11.2010, 10:41
    #36953456
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
MAYAKOV_SV, мне нужен код на языке Visual FoxPro, в котором бы было: открытие jpg-файла, и чтобы он был ReadOnly. Я конечно и сама пробую разобраться, но была бы признательна, если кто-то захочет помочь, поделится своим опытом и напишет код.
...
Рейтинг: 0 / 0
13.11.2010, 11:06
    #36953496
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZaus,
На форме размещаете Image.

Пример кода загрузки картинки:
Код: plaintext
1.
 ThisForm.image1.picture = 'D:\Temp\1.jpg'
Она и будет ReadOnly :)
Просто для редактирования нужно загружать в графический редактор, а тут картинка просто отображается на форме.
...
Рейтинг: 0 / 0
13.11.2010, 11:22
    #36953542
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
MAYAKOV_SV, Вы меня не поняли. У меня есть таблица в Gride. Мне надо сделать так, чтобы по двойному клику мыши на столбце с названием документа происходило открытие jpg-файла. Я прекрасно знаю, как открываются image Но у меня другой случай. Конечно, если не получится написать код открытия jpg-файла, то придется выводить в форму объект image. Но это будет лишь в крайнем случае.
...
Рейтинг: 0 / 0
13.11.2010, 11:37
    #36953569
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
Задача формулируется так:

Открыть приложение для редактирования файлов-картинок, но таким образом, чтобы файл открывался в режиме Read-Only. При этом, команда на открытие должна быть дана из среды FoxPro.

Собственно открыть приложение можно по ассоциации с расширением файла в системе Windows. Подробно это описано здесь

Как открыть файл в другом приложении

Однако управлять режимом Read-Only, да и вообще хоть чем-нибудь в этом приложении при таком открытии - невозможно. Это полная симуляция двойного клика мыши по имени файла в проводнике Windows.

Чтобы из приложения FoxPro можно было управлять тем приложением, в котором предполагается редактирование JPG-файла необходимо, чтобы это приложение имело COM-интерфейс, как приложения Word и Excel. Т.е. разработчики этого приложения должны предоставить какие-либо средства управления своим приложением из-вне самого приложения. Если этого нет, то ничего и не сделаешь.

Ну, правда, есть вариант менять атрибут файла или папки в которой этот файл находится. Т.е. установить атрибут Read-Only на уровне системы. Думаю, тут проще обратится к администратору, чтобы он настроил права доступа на папку, где лежат файлы картинок. Одной группе пользователей - только просмотр. Другой группе пользователей - просмотр и редактирование.

Кстати, таким же образом можно решить и проблему редактирования файлов Word и Excel.
...
Рейтинг: 0 / 0
13.11.2010, 11:38
    #36953571
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZaus происходило открытие jpg-файла . Я прекрасно знаю, как открываются image Но у меня другой случай .Извините, но я не понимаю, какой же у вас случай? Вам надо открыть жпг во внешней программе, но с запретом редактирования? Тогда читайте пост Маякова про организацию доступа к папкам. Или имеется в виду что-то иное?
...
Рейтинг: 0 / 0
13.11.2010, 11:38
    #36953572
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZaus,

Еще одна попытка у меня :)

Вот что нашел поиске:
Код: plaintext
1.
2.
loShell = CreateObject('Shell.Application')
loShell.Open("d:\Photos & Images\MyFile.jpg")

Тогда запустится программа ассоциированная с jpg.
Например, Microsoft Office Picture Manager.
Но в этой программе можно, к примеру поменять цвета и сохранить на диск.
Т.е. не ReadOnly.

Вам лучше сделать свой просмотрщик jpg - пусть по нажатию будет открыватся форма с image для просмотра картинок.

Теперь я правильно все понял, что вы собирались делать?
...
Рейтинг: 0 / 0
13.11.2010, 11:54
    #36953614
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
MAYAKOV_SV, да, спасибо. :) Теперь Вы правильно меня поняли. И щас я попробую реализовать Ваше предложение. Сенкс! :)
...
Рейтинг: 0 / 0
13.11.2010, 12:02
    #36953627
ElenaZaus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ВладимирМ, видите ли, у нас такие условия работы: система Документооборот предполагает создание документов любым пользователем, но тогда другой пользователь должен открывать этот файл только как для чтения. Поэтому четкого разграничения прав тут не получится. У меня много папок: ("Приказы", "Распоряжения" и т.п.), в которые пользователи "складывают" документы программным путем (посредством АРМа). АРМ я писала сама. Поэтому и заморочки все мои. Я сам себе разработчик и кодировщик. С Вордом и Экселем все в порядке, спасибо Вам огромное. Загвоздка вышла с картинками, я просто не знала названия приложения, которое надо принудительно открыть.
...
Рейтинг: 0 / 0
13.11.2010, 12:40
    #36953686
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макросы Word - в код VisualFoxPro 6.0
ElenaZausПоэтому четкого разграничения прав тут не получится.
Если документы/картинки хранить в базе данных то получится.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макросы Word - в код VisualFoxPro 6.0 / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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