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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 20:18   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Закрыть открыть книгу

Здравствуйте.

У меня не получается после сохранения и нажатие на кнопку, ОК сообщения, закрыть сохраненный файл и открыть файл V_ГСМ. Xls
Подскажите кто знает.
Код:
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs folder & "\" & Cells(9, 1) & ".XLSX", 51, ConflictResolution:=xlLocalSessionChanges
    MsgBox "  Данные сохранены в папке  V ГСМ " & Sheets("Отчет").Range("R1") & " имя файла " & Range("A9"), 64, "Сохранение данных"
       Shell "C:\Program Files\IL vgsm\V ГСМ\V_ГСМ. xls", vbNormalFocus     
 Application.DisplayAlerts = True

Последний раз редактировалось segail; 02.10.2009 в 20:22.
segail вне форума Ответить с цитированием
Старый 02.10.2009, 21:39   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте segail.
всему виной логика и конструктивные ошибки.
ThisWorkbook.Save сохраняет текущий файл код которого выполняется, это о нем "... закрыть сохраненный файл..." (?), но если он закроется - выполнение его кода наверное прекратится, как Вы думаете?
попытка выполнить Shell
команда Shell запускает исполняемый программный файл, никак не документ Excel.
управление сохранением и закрытием документов должен выполнять код из совсем другого документа или надстройки, он же в состоянии будет открыть другую книгу в текущей сессии Excel:
Workbooks.Open "C:\Program Files\IL vgsm\V ГСМ\V_ГСМ. xls"
(мне кажется папка \Program Files\ не самым удачным местом для хранения документов, но это мое мнение...)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 02.10.2009, 21:55   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

В таком варианте вроде работает. Закрыть сохраненный файл в текущей книге. Затем открыть файл V_ГСМ и закрыть текущею книгу без сохранения.
Код:
    Application.DisplayAlerts = False
    
    ThisWorkbook.SaveAs folder & "\" & Cells(9, 1) & ".XLSX", 51, ConflictResolution:=xlLocalSessionChanges
    ThisWorkbook.SaveAs Rep_Documents & "\V ГСМ " & Sheets("Отчет").Range("R1") & "\" & Sheets("Отчет").Range("N1") & ".xls", 1, ConflictResolution:=xlLocalSessionChanges
    
    MsgBox "  Данные сохранены в папке  V ГСМ " & Sheets("Отчет").Range("R1") & " имя файла " & Range("A9"), 64, "Сохранение данных"
    Workbooks.Open Filename:="C:\Program Files\IL vgsm\V ГСМ\V_ГСМ. xls"
    ThisWorkbook.Close (False) 'без сохранения изменений

    Application.DisplayAlerts = True
Ярлык файла V_ГСМ.xls находится на рабочем столе. Почему Прог.файл не самый удачный вариант?

Последний раз редактировалось segail; 02.10.2009 в 22:25.
segail вне форума Ответить с цитированием
Старый 03.10.2009, 00:17   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

судя по коду (без фразы "Закрыть сохраненный файл в текущей книге") конечно будет работать, ведь исправленная последовательность действий - сохранение > закрытие > открытие ("закрыть сохраненный файл и открыть файл..." ) заменена - сохранение > открытие > закрытие и стала логичной(!).

У системной папки \Program Files\ специальное назначение - место установки программ. персональные настройки этих программ, документы и шаблоны располагаются в профиле пользователя. Так уж повелось, что мыльницу не вешают в корридоре, а хлебницу не ставят в туалете. Или Вы думаете иначе?
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.10.2009, 18:13   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Здравствуйте

В текущей книге при определенных условиях кликом по кнопке открывается файл, текущая книга закрывается.
Как сделать, чтобы при открытии файла автоматически открывалась форма.
segail вне форума Ответить с цитированием
Старый 06.10.2009, 18:22   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте segail.
"Автоматическое" открытие формы при открытии файла будет выполняться если в модуле открываемой книги разместить подобный код:
Код:
Private Sub Workbook_Open()
    UserForm1.Show
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.10.2009, 18:22   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте segail.
"Автоматическое" открытие формы при открытии файла будет выполняться если в модуле открываемой книги разместить подобный код:
Код:
Private Sub Workbook_Open()
    UserForm1.Show
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.10.2009, 18:29   #8
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

В текущем листе размещен еще данный код
Код:
Sub Кнопка1_Щелчок()
    If Sheets("Отчет").Range("N1") = "" Or Sheets("Отчет").Range("R1") = "" Then ' Если в ячейки N1 и R1 нет значений
        UserForm3.Show
    Else
        UserForm1.Show
    End If
End Sub
Как все это совместить?
segail вне форума Ответить с цитированием
Старый 06.10.2009, 18:35   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Private Sub Workbook_Open()
    If Len([Отчет!N1]) * Len([Отчет!R1]) Then  ' Если в ячейке N1 или R1 нет значений
        UserForm1.Show
    Else
        UserForm3.Show
    End If
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 06.10.2009, 19:08   #10
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

У меня немного не так, выполняется код с условиями.
Код:
Private Sub CommandButton1_Click() ' Ваш код
    path = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & UserForm3.Caption & "\" & ComboBox_Marka.Text & ".xls"
    If ComboBox_Marka.Text = "" Then
    MsgBox "Введите данные по топливу.", vbInformation, "Информационное сообщение"
    Exit Sub
    Else
    On Error Resume Next
    Workbooks.Open (path)
    If Err.Number <> 0 Then
    If MsgBox("Внимание выбор марки топлива осуществляется на " & TextBox2.Text & " год. Продолжить выбор " & ComboBox_Marka.Text & "  ?", _
vbYesNo Or vbQuestion, "Выбор марки топлива") = vbYes Then GoTo wyhod
        ComboBox_Marka = ""
Else
       ThisWorkbook.Close (False)
        End If
        End If
        Exit Sub
wyhod:
        With Sheets("Отчет") ' Сгруппировано для наглядности
        .Range("A1") = TextBox1.Text
        .Range("R1") = TextBox2.Text
        .Range("N1") = ComboBox_Marka.Text
        End With
        Unload Me
        UserForm1.Show
End Sub
После выполнение команды Workbooks.Open (path) открыть путь книги (я так понимаю) открывается файл, вот после открытия данного файла необходимо открыть форму 1 данного файла.
segail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрыть папку Kreadlling Общие вопросы C/C++ 1 08.09.2009 18:24
открыть книгу через vba ruavia3 Microsoft Office Excel 2 31.07.2009 16:39
Диалоги открыть/закрыть файл Altera Операционные системы общие вопросы 3 03.12.2008 01:18
Открыть кнопкой книгу по запросу имени! gavs Microsoft Office Excel 7 30.08.2008 18:06
закрыть программу Var17 Общие вопросы Delphi 1 20.12.2007 10:06