Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
1

Как активировать файл excel из фонового режима | MS Word

11.04.2017, 10:07. Показов 9240. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте Коллеги!
Прошу помощи в решении следующей ситуации.
Есть форма в документе word она имеет ComboBox1 (данные приходят из таблицы excel "Книга1.xlsm" которая запущена в фоновом режиме).
Форма также имеет CommandButton1 который должен вызывать файл "Книга1.xlsm" для редактирования данных ComboBox1.
Просто открыть не получиться, создается файл для чтения.
Помогите пожалуйста научиться активировать файл "Книга1.xlsm" из фонового режима для редактирования данных.
В ниже приведенном коде мои действия

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Dim sFilePath, objXL, Secur
    sFilePath = "C:\ПечатьДокумента\xlsm\DBoss.xlsm"
    Set objXL = CreateObject("Excel.Application")
    Set wс = objXL.Workbooks.Open(sFilePath)
        With ComboBox3
            .ColumnCount = 2                            'колличество столбцов
            .ColumnWidths = "75"                        'ширина столбцов
            .ListRows = 10                              'значений в раскрытом списке
        End With
            Me.ComboBox3.List = wс.Worksheets("Руководство").Range("СписокФИОВсе").Value
            ComboBox3.ListIndex = 0
 
Private Sub CommandButton72_Click()
    Dim fName As Variant
    fName = "C:\ПечатьДокумента\xlsm\DBoss.xlsm"
    Set fName = CreateObject("excel.application") 'Application.GetOpenFilename
    fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символа
    Workbooks(fName).Activate
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2017, 10:07
Ответы с готовыми решениями:

Почему при открытии файла эксель, появляется из фонового скрытого режима мой файл эксель
Добрый день уважаемые форумчане, столкнулся с такой проблеммой. Есть небольшая программка которая...

Отключение фонового режима игры
Всем привет, сворачиваю игру - и она уходит в фоновый режим(падает фпс до 5-10), как сделать что бы...

Из фонового режима, выполнить вставку из буфера
Доброго времени суток всем. У меня такая задача : после запуска моей программы, я перехожу к...

Как из Delphi активировать макросы в MS Word?
Доброе время суток. Вопрос у меня довольно сложный, он затрагивает не только среду разработки...

19
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 10:12 2
Цитата Сообщение от Аватар-С Посмотреть сообщение
Set fName = CreateObject("excel.application") 'Application.GetOpenFilename fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символ
Вот смотри верхняя строка fName - объект, нижняя - строка определись?
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 10:26  [ТС] 3
toiai

Материться желтым цветом на Workbooks(fName).Activate (Sub of Function not defined)
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 11:02 4
Должно быть открыто в одном окне, а у тебя в разных.
Попробуй использовать GetObject, у меня проверить нет возможности.
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 11:16  [ТС] 5
все равно ругается

Visual Basic
1
2
3
4
    Dim fName As Object
    Set fName = GetObject("C:\ПечатьДокумента\xlsm\DBoss.xlsm")
    fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символа
    Workbooks(fName).Activate
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 11:26 6
Как-то не логично:
Visual Basic
1
2
fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символа
    Workbooks(fName).Activate
Если эта книга активна, зачем... надо убрать
После GetObject вставь строку
Visual Basic
1
fName.Application.Visible = True
0
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
11.04.2017, 11:30 7
можно попробовать закрыть открытую книгу, а потом через Shell еще раз активировать Excel с параметром fName, содержащим путь до нужной книги.
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 11:51  [ТС] 8
Цитата Сообщение от toiai Посмотреть сообщение
fName.Application.Visible = True
начинает ругаться на fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символа

Цитата Сообщение от _shark Посмотреть сообщение
можно попробовать закрыть открытую книгу
этот вариант я пробовал, выводит сообщение на сохранить или нет и все равно открывается в режиме чтения.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 11:58 9
Цитата Сообщение от Аватар-С Посмотреть сообщение
fName = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5) 'имя минус .XLS - 4 символа
Цитата Сообщение от toiai Посмотреть сообщение
надо убрать
Писал же!
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 12:13  [ТС] 10
Уже убрал.
Теперь вообще не чего не происходит, не ругается не открывает.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 12:15 11
Приложил бы файл пример, легче было осознать проблему.
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 12:36  [ТС] 12
Да, Коллеги прошу прощенья с этого следовало начать.
Вложения
Тип файла: rar docm.rar (150.3 Кб, 4 просмотров)
0
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
11.04.2017, 12:51 13
Цитата Сообщение от Аватар-С Посмотреть сообщение
этот вариант я пробовал, выводит сообщение на сохранить или нет и все равно открывается в режиме чтения.
мне тоже приходилось в одном из своих макросов открывать Excel в фоновом (невидимом) режиме и получать/сохранять оттуда данные. Такая ситуация с режимом "только для чтения" была тогда, когда в памяти находилось два процесса Excel. Через Диспетчер Задач закройте все Excel-евские процессы, а потом уже пробуйте дальше
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 13:09 14
Вот вариант не в режиме чтения, но надо перед запуском формы в диспетчере задач закрыть все процессы EXCEL
Вложения
Тип файла: rar Doc1.rar (24.1 Кб, 6 просмотров)
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 13:10  [ТС] 15
shark
Это я, пробовал не помогает.
0
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
11.04.2017, 13:18 16
Аватар-С, попробуйте все-таки сначала закрыть объект objXL.WorkBooks.Close, затем выйти objXL.Quit, обнулить объект Set objXL = Nothing, а затем уже выполнять код по повторному запуску Экселя для редактирования данных.
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 13:42  [ТС] 17
_shark,
Хорошо пробую.

Добавлено через 6 минут
_shark
О! Япона мама заработало. Нужен только Set objXL = Nothing

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub CommandButton2_Click()
    Dim sFilePath, objXL, Secur
    sFilePath = "C:\ПечатьДокумента\xlsm\РедактированиеДанных.xlsm" 'ActiveDocument.Path &
    'objXL.WorkBooks.Close
    'objXL.Quit
    Set objXL = Nothing
    Set objXL = CreateObject("Excel.Application")   ' получаем указатель на Application
    objXL.Visible = True                           ' делаем окно Excel видимым
    Set wс = objXL.WorkBooks.Open(sFilePath)
 
End Sub
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
11.04.2017, 13:45 18
Я ведь это и прислал в архиве См #14
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
12.04.2017, 11:17  [ТС] 19
_shark и toiai

Спасибо за участие!

Добавлено через 21 час 32 минуты
Коллеги и еще немного о наболевшем.
toiai прошу прощенья не знаю почему и как умудрился пропустить Ваш вложенный файл.

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

Visual Basic
1
CreateObject("wscript.shell").Run "C:\ПечатьДокумента\xlsm\DBoss.xlsm"
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
14.04.2017, 13:00  [ТС] 20
Здравствуйте Коллеги!
Для очистки совести возвращаюсь к теме.
После вставки кода:
Visual Basic
1
CreateObject("wscript.shell").Run "C:\ПечатьДокумента\xlsm\DBoss.xlsm"
Все вроде бы заработало но, при открытии файла в Excel выходило сообщение на тему - файл уже открыть ну и соответственно параметры входа.
Решить удалось следующим образом:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub UserForm_Initialize()
    Dim sFilePath, objXL ', Secur
    sFilePath = "C:\ПечатьДокумента\xlsm\DBoss.xlsm"    'ActiveDocument.Path &
    Set objXL = CreateObject("Excel.Application")       'получаем указатель на Application
    objXL.Visible = False                               'делаем окно Excel не видимым
    objXL.ScreenUpdating = False
    Set wс = objXL.Workbooks.Open(sFilePath)
        'ШТАМ
            Me.ComboBox24.List = wс.Worksheets("Штампы").Range("СписокШтампы").Value
            ComboBox24.ListIndex = 0
            
           'в принципе нужно было разобраться с этими тремя строками 
            wс.Close False      'закрываем файл False - обязательно
            objXL.Quit          'убираем указатель на excel
            Set objXL = Nothing 'убираем файл из фонового режима
End Sub
 
Private Sub CommandButton31_Click()
    CreateObject("wscript.shell").Run "C:\ПечатьДокумента\xlsm\DBoss.xlsm"
    Unload Me
End Sub
Все, Всем УДАЧИ!
0
14.04.2017, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2017, 13:00
Помогаю со студенческими работами здесь

Как открыть html-файл через MS Word и MS Excel?
Здравствуйте, вопрос в заголовке темы. Конкретно интересует как это сделать с ShellExecute. Буду...

Можно как либо открыть файл для редактирования в Excel и в Word?
Можно как либо открыть файл для редактирования в Excel и в Word (но не в браузере)?

Открыть файл Word и какой-либо файл из приложения под Excel
То есть выполнить двойной щелчок мышкой на каком-либо файле средствами VBA.

Из Excel в Word, как добавить или сохранить закладку в Word
Добрый день, уважаемые форумчане, надеюсь на вашу помощь. Переношу данные из Excel в шаблон...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru