Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2012, 01:23   #11
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

А что пишет в ошибке, я подозреваю, что здесь вся загвоздка с объектом Variables
Пименов Александр вне форума Ответить с цитированием
Старый 01.01.2012, 01:28   #12
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

говорю же ничего не пишет вылазит форма, там есть отмена и справка
справку жму, и ничего не показывает, сейчас попробую выкинуть блок с Вариаблес
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.01.2012, 01:37   #13
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

1 блок с Вариаблес мне нужен
2 ведь ошибка вырисовуется позже
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.01.2012, 01:50   #14
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

видимо лучше описать всю задачу
есть два файла, оба лежат на диске С
1.doc и 2.doc
открываю 1.doc запускаю прогу, её функционал
много чего, и затем
открыть 2.doc "втёмную" - то есть не видимым
сделать изменения
закрыть с сохранением
и чтобы без вопросов
есть загвоздка в этом 2.doc в АутоКлозе есть код
Код:
Sub AutoClose()
'AutoClose работает при закрытии документа Ворд

'отключаем дёргание экрана при выполнении кода
    Application.ScreenUpdating = False

    'условие, если были в документе изменения и ..., тогда ...
    If ActiveDocument.Saved = False And ActiveDocument.Name = "2.doc" Then

        'показать форму с именем ... в модальном режиме
        'в модальном режиме форма не является помехой для осуществления других действий
        'не нужно имени кнопки и имени формы давать одно и тоже имя
        UserForm_Сохранить_документ.Show
    End If

    'отменяем отключенное ранее дёргание экрана при выполнении кода
    Application.ScreenUpdating = True

End Sub
то есть этот АутоКлозе надо обходить
Можете выложить примерный код действий?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.01.2012, 02:34   #15
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Код:
Sub AutoClose(boo)
If boo = False Then Exit Sub
При передаче действий в AutoClose если параметр boo = False, тогда код процедуры не будет выполняться
Пименов Александр вне форума Ответить с цитированием
Старый 01.01.2012, 19:30   #16
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

не взлетает, в файле 2.doc имею:
Код:
Public ОбойтиAutoClose As Boolean
Sub AutoClose()
'AutoClose работает при закрытии документа Ворд

    ОбойтиAutoClose = False

    'выполнить функцию с именем ...
    FunctionAutoClose ОбойтиAutoClose

End Sub

Sub FunctionAutoClose(ОбойтиAutoClose)
'AutoClose работает при закрытии документа Ворд

'отключаем дёргание экрана при выполнении кода
    Application.ScreenUpdating = False

    If ОбойтиAutoClose = True Then GoTo Конец

    'условие, если были в документе изменения и ..., тогда ...
    If ActiveDocument.Saved = False And ActiveDocument.Name = "2.doc" Then

        'показать форму с именем ... в модальном режиме
        'в модальном режиме форма не является помехой для осуществления других действий
        'не нужно имени кнопки и имени формы давать одно и тоже имя
        UserForm_Сохранить_документ.Show
    End If

Конец:

    'отменяем отключенное ранее дёргание экрана при выполнении кода
    Application.ScreenUpdating = True

End Sub
в файле 1.doc в конце имею
Код:
Public ОбойтиAutoClose As Boolean

If Данные_добавить_или_изменить_требуется_в_этом_документе = True Then
        Set oDocument = ActiveDocument
        '******ActiveDocument -- oDocument **************************

    Else

        'в пошаговом режиме нажимаем Шифт + Эф 8
        'открываем документ ...
        'чтобы открыть файл "втёмную" необходимо при открытии свойство Visible установить в false:
        'Documents.Open FileName:="D:\Рабочая папка\А.doc", Visible:=False
        Set oDocument = Documents.Open(Диск_папки_файлы_программы & ":" & Адрес_размещения_папки_Рабочая & "2.doc", Visible:=False)
        ActiveDocument.Activate
    End If

    IntegerДобавлено_Variables = 0

    On Error Resume Next
    '11 цикл
    For q = 1 To IntegerРазмер_массива
        oDocument.Variables.Add StringНазвание_Variables(q), StringЗначение_Variables(q)
        If Err.Number = 9 Then oDocument.Variables.Add StringНазвание_Variables(q): Err.Clear
        'Subscript out of range
        IntegerДобавлено_Variables = IntegerДобавлено_Variables + 1
        'конец 11 цикла
    Next q
    'отключить обработчик ошибок
    On Error GoTo 0

    If Данные_добавить_или_изменить_требуется_в_этом_документе = False Then
        ОбойтиAutoClose = True
        'сохранить документ
        oDocument.Save
        'ставим флаг, что изменения были в документе
        'oDocument.Saved = False
        'закрыть документ
        oDocument.Close
    End If
Что получается - файл 2.doc открывается, но в нём не сохраняется
Верится с трудом, чтобы Public ОбойтиAutoClose As Boolean с одного файла в другой передалось, что делать??
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.01.2012, 21:05   #17
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

сделал, только по окончанию спрашивает Сохранить? и надо подтверждать, но в этом есть и плюс,такая вот петрушка
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.01.2012, 03:30   #18
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Дела давно минуших дней

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
то есть этот АутоКлозе надо обходить
Можете выложить примерный код действий?
Примерный (вставив его в Normal.dot[m] — вы им перебьёте прочие аутоклоузы):
Код:
Sub autoclose()
Dialogs(wdDialogFileSaveAs).Execute 'закрыли-сохранили'
End Sub
(документ сохранится закроется без вопросов при нажатии на крестик).

Как при этом всё же оставить себе возможность не сохранять изменения (кроме клавиши Shift), вы открыли давным-давно (25.07.2010 в 18:22): http://www.cyberforum.ru/vba/thread154357-page4.html#35
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файл на сайте и как узнать его modified без скачивания его celovec Работа с сетью в Delphi 2 06.09.2011 16:30
Как открыть формат php без Java,мать его... Gedeon7 Помощь студентам 6 01.02.2011 00:32
как открыть exe файл в Builder C++ для его изменения C-Jay C++ Builder 3 05.05.2010 21:51
Диалоги открыть/закрыть файл Altera Операционные системы общие вопросы 3 03.12.2008 01:18