powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ограничения буфера обмена Excel?
27 сообщений из 27, показаны все 2 страниц
Ограничения буфера обмена Excel?
    #32359601
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал я маленькую процедуру на VBA в Excel, которая вставляет данные в страницу книги, а потом эту страницу копирует в другой файл. То есть в первой книге у меня есть таблица с данными и страница-шаблон. А в новую книгу надо вставить эту страницу шаблон для каждой строки из первой книги... Встретился с такой вот проблемой: когда строк в таблице у меня 20 или 30, то процедура отрабатывает как часы, а вот если строк больше 30, то на 31 процедура вылетает с сообщением об ошибке копирования.
Я предположил, что в книгу нельзя вставить больше 30 страниц, написал тестовую процедуру, которая вставила мне 200 чистых страниц. Тогда получается, что слишком много данных копируется несколько раз и происходит что-то вроде переполнения? Нельзя ли как-нибудь очищать буфер от предыдущих данных?
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359613
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как всегда, для телепатов...
Clipboard.Clear ?
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359641
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня 97 Excel и там такого объекта нет :(
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359656
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле я не верю в такое объяснение. Страница не копируется просто в буфер, она всегда копируется куда-то. лучше бы все-таки поподробнее...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359661
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копирую я вот так:
Код: plaintext
objParentBook.Sheets(strOrderSheetName).Copy After:=objPrintBook.ActiveSheet
На 30 странице вылетает ошибка "метод Copy завершен неверно" и указывает на эту строку. Если я буду запускать процедуру для таблицы из 25 строк, товсе будет нормально. Больше 30 — вылетит. Поэтому мне приходится разделять большие таблицы на куски по 25 строк и делать.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359662
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у меня в Excel2000 этого метода тоже нет. Он, оказывается, есть только в "чистом" VB. Так что ой...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359679
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал у себя большой лист с 40 копиями - все ОК.
Мобыть и правда дело в памяти (ее-то у меня 512...)
Сейчас попробую загрузить побольше
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359695
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
200 копий - полет нормальный...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359703
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще дома попробую, у меня там тоже 512, а здесь на работе 256. Сейчас мне надо уходить, позже зайду узнать как там у тебя результаты.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359704
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наращивай до 4000 :)
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359891
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Темный :
Это ты кому? ;-)
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359898
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще такой нюанс из хелпа:
Число листов в книге Ограничено объемом доступной памяти :-)
Правда, какое все это отношение имеет к Аксу...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32359919
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни хрена не выходит... Попробовал дома на 512 метрах памяти и ни хрена. Все так же вылетает на 30 странице...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360066
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего это связано с тем, что название листа не может быть длиннее 32 символов. При копировании листа кодовое название (CodeName) формируется следующим образом - при первом копирование к этому имени добавляется единичка, затем двойка, затем тройка и т.д.

Если копировать постоянно активный лист

Код: plaintext
ActiveSheet.Copy after:=ActiveSheet


То название листов будет формироваться таким образом:
Sheet11, Sheet111, Sheet1111, Sheet11111 и т.д., дойдя до ~30 Ёксель перестанет копировать листы. Это не зависит от количества памяти и пр. Кодовые названия можно посмотреть в левом окне VBA.

В твоем случае имена должны формироваться по типу Sheet11, Sheet12, Sheet13, но не факт. Проверь.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360089
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не так. Он дает имя исходного и добавляет в скобках порядковый номер:
МойЛист(1)
МойЛист(2)
МойЛист(3)
МойЛист(4)...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360095
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ingvarwolf:
А сколько свободной памяти показывает при этом?
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360109
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexJuice

Я не зря упоминул про CodeName. То что отображается как МойЛист(1)
МойЛист(2)
МойЛист(3)
МойЛист(4)... это просто Name.

Попробуй выполнить мой код
Код: plaintext
1.
2.
for i= 1  to  40 
ActiveSheet.Copy after:=ActiveSheet
next i

и посмотри в VBA названия листов. Сравни CodeName и Name (то что в скобках) и почуствуй разницу
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360172
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почувствовать ее несложно. Но ведь ты неправильно написал про принцип формирования CodeName! Он на самом деле будет такой (для русской версии):
Лист1
Лист2
Лист3...
Ну и где здесь страшные 32-хзнаковые названия после тридцатого листа?
и потом что значит "просто Name"? Ведь ограничение-то действует только для него, а CodeName формируется автоматически!
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360174
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу поправиться: про принцип ты написал как раз правильно! А вот пример почему-то привел как раз несоответствующий ему (в первый раз). И в любом случае CodeName Акс задает сам и не дает его менять, так что в нем траблов быть не должно.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360501
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в любом случае CodeName Акс задает сам и не дает его менять, так что в нем траблов быть не должно.

В том-то и дело, что это потенциальный трабл. В указанном мной примере (кстати ты пробовал его выполнять?) CodeName увеличивается с каждым разом, что приведет к тому, что Ёксель откажется копировать лист, причем причину его отказа усмотреть с ходу сложно.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360677
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну пробовал, ессно... Результат уже написал (вчера от 19:34), и никаких траблов там возникло. И в любом случае при переходе за 3-ий десяток длина имен не меняется!
CodeName
Лист1
...
Лист31

Name
Лист1
...
Лист1(31)
В аглицком варианте, подозреваю, единственным отличием будет "Sheet" смевто "Лист".
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360702
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя Excel какой? Видать в разных версиях по-разному формируются CodeName. Я пробовал на 97(eng) и 2000(rus) и у меня они формировались именно таким образом как я написал. Может быть поэтому у одних людей код Ingvarwolf работает, а у других - нет.
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360736
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если копировать постоянно активный лист... То название листов будет формироваться таким образом: Sheet11, Sheet111, Sheet1111, Sheet11111 и т.д., дойдя до ~30 Ёксель перестанет копировать листы.
Ну хоть какой-то отголосок проблемы... Попробовал пример CtrlAlt так все так и выходит... Правда до 40 не доходит — Excel тихо без шума вылетает :)... Но в моей программе, из-за которой я и создал этот топик, Листы просто называются очередным номером по порядку, а не добавлением единички...
Ну буду смотреть дальше...
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32360926
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это достаточно известная проблема, CtrlAlt вообщем верно обрисовал главную затыку:

http://support.microsoft.com/default.aspx?scid=kb;en-us;177634&Product=xlw
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32361177
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 CtrlAlt: Excel 2000 Rus.
И что, CodeName такие?
Sheet1
Sheet11
Sheet111
Sheet1111
???
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32363078
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SergeySV:
Посмотрел я что по этому поводу пишет Microsoft: Microsoft has confirmed this to be a problem in Microsoft Excel 97. This problem no longer occurs in Microsoft Excel 2000. Только у меня и в 2000 Excel-е это вылетает... Может правда у меня Excel неправильный... :)
...
Рейтинг: 0 / 0
Ограничения буфера обмена Excel?
    #32363096
Ingvarwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на самом деле, то, что они там советуют
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub Copy Sheets()
    For x =  1  To  300 
        Sheets.Add
        Workbooks( "YourWorkBook.xls" ).Sheets( "sheet1" ).Cells.Copy
        ActiveSheet.Paste
        Workbooks( "YourWorkBook.xls" ).Sheets( "sheet1" ).Select
    Next x
End Sub
у меня сработало. Правда теперь на каждую вставленную страницу выдает сообщение типа: "У вас тут диапазон именованный, хотите использовать тотже или переименовать?" Теперь вот буду искать как от этого избавиться.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ограничения буфера обмена Excel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]