Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
1

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

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

Здравствуйте Коллеги!
Прошу помощи в решении следующей ситуации.
Есть форма в документе 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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
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
180 / 179 / 30
Регистрация: 11.10.2016
Сообщений: 570
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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
11.04.2017, 12:15 11
Приложил бы файл пример, легче было осознать проблему.
0
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 12:36  [ТС] 12
Да, Коллеги прошу прощенья с этого следовало начать.
0
Вложения
Тип файла: rar docm.rar (150.3 Кб, 4 просмотров)
180 / 179 / 30
Регистрация: 11.10.2016
Сообщений: 570
11.04.2017, 12:51 13
Цитата Сообщение от Аватар-С Посмотреть сообщение
этот вариант я пробовал, выводит сообщение на сохранить или нет и все равно открывается в режиме чтения.
мне тоже приходилось в одном из своих макросов открывать Excel в фоновом (невидимом) режиме и получать/сохранять оттуда данные. Такая ситуация с режимом "только для чтения" была тогда, когда в памяти находилось два процесса Excel. Через Диспетчер Задач закройте все Excel-евские процессы, а потом уже пробуйте дальше
1
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
11.04.2017, 13:09 14
Вот вариант не в режиме чтения, но надо перед запуском формы в диспетчере задач закрыть все процессы EXCEL
0
Вложения
Тип файла: rar Doc1.rar (24.1 Кб, 6 просмотров)
1 / 1 / 0
Регистрация: 03.02.2017
Сообщений: 102
11.04.2017, 13:10  [ТС] 15
shark
Это я, пробовал не помогает.
0
180 / 179 / 30
Регистрация: 11.10.2016
Сообщений: 570
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
3196 / 949 / 219
Регистрация: 29.05.2010
Сообщений: 2,062
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
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® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.