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

Ошибка открытия формы при изменении имени файла Excel

07.04.2016, 16:44. Показов 2253. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые коллеги, добрый день.
Рассчитываю на вашу помощь в такой проблеме.
Разработал простую форму, которая берет данные с одного листа, что-то делает с ними
и результат пишет на другой лист. Файлу дал имя "Расчет. 0.5.xlsm". Постепенно стал
дополнять функциональность формы. Создал файл "Расчет. 0.6.xlsm". Дальше следующее:
открываю файл 0.6, запускаю с помощью макроса свою форму и вижу, что форма явно
обращается к файлу 0.5 и даже открывает его. Видимо, где-то (в проекте?) прописывается
ссылка на файл 0.5. Подскажите как быть, чтобы форма не путалась в файлах?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2016, 16:44
Ответы с готовыми решениями:

Ошибка при изменении названия файла в формуле
Была рабочая формула: ActiveCell.FormulaR1C1 = _ ...

Ошибка открытия файла из-за длинного полного имени файла
Windows XP и 7, Visual Studio 10 и 12. В программе на C# при открытии файла docdoc = word.Documents.Open(ref filename, ref confConv, ref...

Не работает запуск макросов с панели инструментов при изменении имени файла
Здравствуйте, подскажите, пожалуйста как исправить проблему.. сделал в своем документе вкладку "отчеты" (настроил в ленте),...

14
18 / 18 / 2
Регистрация: 12.02.2013
Сообщений: 387
07.04.2016, 23:25
aleskov, исправить код. Вы же сами пишете куда форме обращаться, это ведь не восстание машин. Ищите ошибку. Посмотрите в инициализации
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 10:17  [ТС]
Добрый день.
Все верно. Но я вообще не пишу, куда обращаться, считая, по умолчанию,
что все обращения в коде - к листам открытого файла. Из формы в этом
файле я обращаюсь к его листам. Ну там, Worksheets("Лист1") и т.д.
Ан нет! Выходит, что-то где-то в недрах файла Excel остается.
Проблема еще в том, что конечному пользователю удобно именовать файлы
под себя. Скажем, "Расчет - февраль 2016 г.xlsm" или "Расчет - март 2016 г. (Ярославль).xlsm"
и т.д. А тут переименование приводит к такой неожиданности с открытием!
Спасибо за отклик, тем не менее.
0
18 / 18 / 2
Регистрация: 12.02.2013
Сообщений: 387
08.04.2016, 10:37
aleskov, Как узнать Item листа в книге Excel сообщение №12 , там почитайте, может что и получится с codename
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.04.2016, 10:48
Предположу, что это возможно, хотя противоречит какой-либо логике.
Но есть один способ, который позволяет проверить - действительно ли вашей книге снесло крышу (есть один проверенный способ узнать это).
1. Отключите макросы
2. Откройте книгу (не из доверенного места или предварительно ее переименовав)
3. Добавьте в любом месте кода ЛЮБОЕ изменение - где-то просто добавьте пустую строку ...
4. Сохраните книгу, закройте ...
5. Включите макросы
6. Откройте книгу и проверьте ваши проблемы

И! если они все еще не исправились, то проблема однозначно в вашем коде.
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 11:54  [ТС]
Еще раз доброго времени суток.
Чтобы оживить восприятие проблемы, предлагаю ее описание в картинках. Столкнулся с проблемой, а потом она вроде бы перестала воспроизводиться. Но вот - воспроизвел. Посмотрите в приложенной доке, плиз!
Вложения
Тип файла: rar Проблема в картинках.rar (296.9 Кб, 6 просмотров)
0
18 / 18 / 2
Регистрация: 12.02.2013
Сообщений: 387
08.04.2016, 12:02
aleskov, сложно для меня))) У вас есть один открытый файл, а расчеты происходят в другом?( это задумано или в этом и есть ошибка?) Второй файл открывается всегда один и тот же или разные?
если один и тот же, то явно вы где то в коде ссылаетесь на этот файл. Может форма туда привязана.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.04.2016, 12:15
Коллега, без обид, но если вы занимаетесь работой, связанной с расчетами KPI, то ваш уровень должен подразумевать более четкое построение ТЗ на проблему. Вы же понимаете, что мы не можем вам сказать глядя на летящий над нами самолет на высоте 3 тыс. метров - почему он летит не правильно.

Вы либо сдаете код, либо сдаете его частично ... либо никак ...
Попробуйте подумать сами ... первое что приходит в голову - повесить на событие деактивации основной книги Stop, а затем посмотреть стек вызовов ...
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 12:16  [ТС]
...Вдогонку к приложенным картинкам.
Если я исходный файл прячу (переименовываю его, убираю в другую папку), то Excel
выдает сообщение, что этот файл не найден.

Как можно догадаться, все-таки дело в том, что переименование файла не приводит
к переименованию проекта и каких-то скрытых его настроек. Или не очень скрытых,
но о которых я не знаю. Excel ищет файл (таблицу) и ее листы, которые как-то прописаны
в проекте.

Но как быть? Пользователь нуждается в том, чтобы создавать копии исходного файла
и именовать их под себя: по месяцам, по городам.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.04.2016, 12:17
Вам ответили.
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 12:26  [ТС]
ctac1412, Да, как раз в этом ошибка. Несмотря на громкое название (KPI), все тут совершенно банально, как в ларьке, торгующем овощами. Проблема только с переименованием файла. Наверное, могу
предоставить действующую модель возникающей ошибки.

Добавлено через 4 минуты
StepInLik, Уже сказал другому участнику обсуждения, что ничего тут нет выдающегося и примечательного. Код банальный. Берет значения с одного листа по условию (> даты начала месяца и <даты конца месяца) и пишет сумму в ячейки другой таблицы. Весь фокус связан только (как я начал догадываться) с переименованием исходного файла и НЕпереименованием каких-то данных об исходном файле в проекте. Вопрос,
можно ли это обойти и как?
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.04.2016, 12:32
(без обид)Поймите правильно, то что вы пишете - полнейшая чушь.
При обращении к данным какого-то листа вы используете код, а не ссылку. Код, который отсылает интерпретатор на лист с конкретным именем, который каждый раз выбирается из текущей книги, если вы не указали иное.

На примере из жизни - если вы мне сказали "возьми нож с твоего стола", то я интерпритатор, буду каждый раз искать его на моем столе, как это было сказано вами. И каждый раз буду обращаться к тому, столу, который в этот момент МОЙ. а если мой стол, который был моим вчера - выкинули, то я не буду на нем искать т.к. он НЕ МОЙ.

Перестаньте заставлять гадать нас на кофейной гуще. Так с вами никто не будет работать.
И попробуйте хоть что-то сделать сами! Сделайте и напишите - "для своей проблемы я попробовал сделать ВОТ ЭТО".
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 12:40  [ТС]
StepInLik, :-) Охотно готов признать, что я делаю или сделал какую-то глупость. Но описываю-то
я то, что делаю, как мне представляется, четко, последовательно, по шагам и недвусмысленно, и даже в картинках. Как я сказал, если с такой проблемой больше никто не сталкивался, а мне она все еще представляется неожиданной и поучительной, то предлагаю прервать обсуждение, пока я не предоставлю действующую модель возникающей проблемы.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.04.2016, 12:43
Вам всего лишь нужно выложить рабочий файл без данных.
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 7
08.04.2016, 14:30  [ТС]
Доброго времени дня.
Обещал создать модель возникновения ошибки. Создал. И попутно понял, что происходит.:-)
Не взыщите, если все это окажется для вас полной ерундой, не стоящей внимания.
(Для меня это в диковинку, т.к. для Access'а я много лет много чего писал, а для Excel'а -
почти всего ничего.)
Суть дела такова. Ошибка возникает только если:
для вызова формы, выполняющей расчет, используется макрос, вызываемый из Ленты
или из панели быстрого доступа.
Ну, и понятно, почему. Потому что в самом деле в настройках ленты и панели прописывается
полный путь к файлу.
Если я создаю копию исходного (прописанного на ленте и на панели) файла, переименовываю
копию как мне нужно, открываю его щелчком мышки, а потом пытаюсь запустить форму вызовом
прописанного макроса из Ленты или панели, то, ясное дело, откроется прописанный файл.
Извините за многословие и беспокойство. Спасибо всем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2016, 14:30
Помогаю со студенческими работами здесь

Ошибка при попытке открытия документа Excel
Почему ругается на открытие файла procedure TForm1.Button1Click(Sender: TObject); var i, j, RowCount, ColCount: Integer; ...

Ошибка при автоматическом изменении формы
не могу понять,что сделал не так :) Есть форма, которая состоит из поля (графика), которое подстраивается под текущие размеры формы, а...

Обновить Excel документ при изменении XML файла
Здравствуйте уважаемые знатоки:) Мне нужна ваша помощь. В общем опишу ситуацию. Создал я класс, в котором есть метод, этот...

Автосохранение файла Excel при изменении любой ячейки
Уважаемые форумчане!!! Подскажите пожалуйста, как в Excel сделать так, чтобы при каждом изменении любой ячейки файл автоматически...

Ошибка компиляции при изменении запускаемой формы
В целях отладки проекта изменил запускаемую форму: static void Main() { Application.EnableVisualStyles(); ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru