|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|||||||||||
Доступ к данным другой книги Excel05.01.2014, 18:17. Показов 15249. Ответов 33
Метки нет (Все метки)
Нужно, работая в одной книге, открыть другую книгу и работать с данными оттуда. Есть фрагмент кода:
Подскажите, пожалуйста. Не понимаю этого.
0
|
|||||||||||
| 05.01.2014, 18:17 | |
|
Ответы с готовыми решениями:
33
доступ к данным другой программы Доступ к данным Datagridview из другой формы |
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 11:58 [ТС] | |
|
Файл "Кафе" - главный. Там на панельке есть кнопка "Работа с персоналом". При нажатии на неё считываются данные из книги "Персонал" и загружаются на форму. Потом работника можно удалить, изменить данные, или добавить нового человека. Данные то считываются, а дальше ничего сделать невозможно.
0
|
|
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 12:04 [ТС] | |
|
Вы там сильно не обращайте внимания на мой кривой код. Я ведь только учусь
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 10.01.2014, 14:00 | ||||||
|
Посмотрел.
Думаю основной вопрос я уже выше решил, всё работает (заменил строку ничего в ней не меняя):
)Замечание по практическому применению - нужно бы при переходе на другие книги возвращать родной интерфейс. А он кстати вообще не возвращается полностью даже после закрытия книги - Application.CommandBars("Management").De lete не хватает. А вообще код совсем и не кривой.
1
|
||||||
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 14:37 [ТС] | |
|
Спасибо Вам большое
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 10.01.2014, 15:36 | |
|
Думаю там дело вот в чём (посмотрел пристальнее
) - нельзя закрывать книгу-источник листбокса. И у Вас ругается не на память, а на недоступность ресурса.Нужно или держать ту книгу открытой, или брать данные в массив и заполнять листбокс из него (можно и с листа, но из массива быстрее).
0
|
|
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 16:20 [ТС] | |
|
А будет всё нормально, если я в каждой процедуре буду открывать книгу, но закрывать только в самом конце, при закрытии формы?
Мне вариант с открытой книгой кажется проще (лично для меня). С массивом сложновато будет
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 10.01.2014, 16:31 | |
|
Можно и открывать каждый раз заново, но зачем?
И если будут изменения в открытом ранее файле - то будет запрос по поводу этих изменений, т.к. они пропадут. Лучше проверять, не открыт ли уже файл, или использовать getobject.
0
|
|
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 16:42 [ТС] | |
|
А что делать с getobject? Куда и когда его писать?
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 10.01.2014, 18:20 | ||||||
|
Ну вот например некая симуляция:
Но иногда такой способ глючит. Но редко ![]() Как можно заметить - в этом случае книга каждый раз не "переоткрывается".
0
|
||||||
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 18:47 [ТС] | |
|
А можно как-то сделать так, что открыть книгу один раз, делать с ней что угодно, а потом закрыть? Как-нибудь так, чтобы она была доступна из любого места программы (ну или почти из любого)?
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 10.01.2014, 19:03 | ||||||
|
Можно.
Погоняйте пошагово например такие коды. В начале обязательно выполнить Sub otkritie(), в конце Sub zakritie() Код должен быть в стандарном модуле!
0
|
||||||
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
||||||||||||||||
| 10.01.2014, 20:46 [ТС] | ||||||||||||||||
|
Делаю так.
Это дело написала в стандартном модуле
0
|
||||||||||||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 10.01.2014, 21:29 | ||||||
|
Ругается вероятно потому, что файл не открыт. Вообще ругнуться тогда должно уже строкой выше, на Set ws...
Форма так не видит переменную Filename, да и вообще их все. Нужно писать имямодуля.Filename и аналогично с wb и ws. Но если использовать будете только в одной форме - то переносите весь этот код в модуль формы. Смысл в том, чтоб в начале работы в публичные переменные запомнить путь к файлу, и определить объектные переменные, которые будут указывать на файл и лист. Затем из любой процедуры формы проверяем переменные - если там нет файла, то его открываем, если же есть - используем. Хотя конечно можно просто каждый раз не глядя делать
0
|
||||||
|
10 / 10 / 2
Регистрация: 23.09.2012
Сообщений: 427
|
|
| 10.01.2014, 22:04 [ТС] | |
|
Перенесла весь код в модуль формы. Всё по прежнему...
0
|
|
| 10.01.2014, 22:04 | |
|
Помогаю со студенческими работами здесь
34
Доступ к данным, которые находятся в другой форме ОЧЕНЬ медленный доступ к данным в файлах Excel Доступ к данным Excel с помощью ADO.NET Как считать Excel файл и получить доступ к данным? Как получить доступ к данным в новом окне excel? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|