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

Не открывается файл после чтения из закрытой книги

19.01.2020, 14:20. Показов 1863. Ответов 12

Студворк — интернет-сервис помощи студентам
Необходимо было считать данные из другой закрытой книги, ДВССЫЛ читает только при другой открытой книге, в сети был найден способ через UDF

Visual Basic
1
2
3
4
5
6
7
Function Get_Value_From_Close_Book(sWb As String, sShName As String, sAddress As String)
Dim vData, objCloseBook As Object
Set objCloseBook = GetObject(sWb)
vData = objCloseBook.Sheets(sShName).Range(sAddress).Value
objCloseBook.Close False
Get_Value_From_Close_Book = vData
End Function
Значение считывается, но после использования данной функции, книга из которой читаем не открывается(просто открывается новый экземпляр excel). Каким образом предотвратить поломку файла после работы функции?

=Get_Value_From_Close_Book("D:\temp"&C2& ".xlsx","Лист1","A1")

C2="Data"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2020, 14:20
Ответы с готовыми решениями:

Не открывается файл для чтения
Не могу разобраться с кодом , не получается прописать входной фаил , не принимает его .. #include <stdio.h> #include...

Выбор книги для чтения после Троелсена
75%. Продолжать читать книги для новичков типа Троелсена? Или можно начинать искать несложную работу с небольшим заработком, чтобы...

Не открывается текстовый файл для чтения (использовал fstream.h)
#include <fstream> #include <string> #include <conio.h> #include <iostream> using namespace std; void main() { ifstream...

12
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4157 / 2446 / 508
Регистрация: 13.12.2016
Сообщений: 8,313
Записей в блоге: 5
20.01.2020, 10:05
Цитата Сообщение от corbyback Посмотреть сообщение
objCloseBook.Close False
Вы же ее не закрываете, а оставляете открытой
попробуйте после 6 строки поставить
Visual Basic
1
objCloseBook.Close
0
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
20.01.2020, 14:22
АЕ, на сколько помню это значит закрыть без сохранения, а не оставлять открытой
Visual Basic
1
objCloseBook.Close False
Добавлено через 4 минуты
corbyback, попробуйте между строкой 3 и 4 добавить это:
Visual Basic
1
objCloseBook.Windows(1).Visible = 1
это сделает книгу видимой при работе макроса, и в дальнейшем для вас

скорее всего проблема ни в том что книга не открывается, а в том что она открывается но вы её не видите(при этом как раз появляется пустой ексель если других не запущено), так как GetObject её скрытой открывает

Добавлено через 6 минут
corbyback, или используйте этот код когда открываете книгу, но не видите её
Visual Basic
1
2
3
4
5
6
Sub F_010_VISALLBOOK()
    Dim xlwbT As Workbook
    For Each xlwbT In Application.Workbooks
        xlwbT.Windows(1).Visible = 1
    Next
End Sub
это сделает все книги видимыми
1
1 / 1 / 0
Регистрация: 27.11.2014
Сообщений: 34
20.01.2020, 17:45  [ТС]
Цитата Сообщение от Aleksan7 Посмотреть сообщение
corbyback, попробуйте между строкой 3 и 4 добавить это:
Visual Basic
Aleksan7, подставил верно, книга открывается, но objCloseBook.Close не закрывает книгу, каким образом можно это исправить?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.01.2020, 18:34
Должна закрываться, если до этого доходит. Может код с ошибкой прерывается?
0
1 / 1 / 0
Регистрация: 27.11.2014
Сообщений: 34
20.01.2020, 18:53  [ТС]
Сейчас обнаружил, что если этот код переделать в макрос, а не в UDF, то close сработает. Close не срабатывает если вызывать функцию из ячейки. Есть способ пофиксить это?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.01.2020, 18:55
В пример вполне достаточно использовать обычную прямую ссылку.
0
1 / 1 / 0
Регистрация: 27.11.2014
Сообщений: 34
20.01.2020, 19:00  [ТС]
Hugo121, каким образом, я нуб в vba
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.01.2020, 19:05
Ставите ссылку на ячейку, закрываете тот файл, затем макросом воспроизводите текст/формулу что увидите в ячейке, в конце меняете на полученное значение.
0
1 / 1 / 0
Регистрация: 27.11.2014
Сообщений: 34
20.01.2020, 19:12  [ТС]
Мб я не совсем понял, для этого есть ДВССЫЛ, но он не работает с динамическим путем до книги, который как раз у меня.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.01.2020, 19:14
Вот например получаете такую ссылку:
Visual Basic
1
='D:\Temp\[test.xlsx]Лист1'!A1
Кроме того, есть стандартное средство ExecuteExcel4Macro(arg)

Добавлено через 1 минуту
Цитата Сообщение от corbyback Посмотреть сообщение
не работает с динамическим путем
- Вы ведь уже используете макрос, ему пофиг какой динамический или статический путь прописывать в ячейку.
0
1 / 1 / 0
Регистрация: 27.11.2014
Сообщений: 34
20.01.2020, 22:20  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
Кроме того, есть стандартное средство ExecuteExcel4Macro(arg)
Hugo121 ExecuteExcel4Macro Работает, но мне надо чтобы путь до файла указывался в ячейке, а не зашитый в макросе
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.01.2020, 23:20
Если нужно - так и делайте, пример в первом посте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2020, 23:20
Помогаю со студенческими работами здесь

Файл базы открывается только для чтения и с отключёнными макросами
Здравствуйте знатоки. Возникла небольшая проблема. Есть база acess 2010 в которой необходимо изменить пару пользователей. При открытии...

Скопировать лист с закрытой книги
Есть код, который копирует ячейки из указанной закрытой книги в текущую: Public Function GetValue(path, file, sheet, ref) Dim...

Список диаграмм закрытой книги
Список таблиц закрытой книги Excel нетрудно получить с помощью адо-рекордсета (OpenSchema(adSchemaTables)). Но как получить список диаграмм...

Копирование из закрытой книги по условию
доброго времени! Есть макрос для копирования строк из закрытых книг в сводный отчет: Sub CopyStr() Dim path As String, file As...

Копирование данных из закрытой книги
Добрый день, уважаемые форумчане. Помогите советом. Мне нужно скопировать все данные из столбца закрытой книги Excel, которая лежит на...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 11.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru