|
|
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
В общем мне по работе нужно считать символы в файлах *.xls , но программа которая это делает считает только символы в видимых ячейках. Я нуб и в макросах практически ничего не секу. Пару недель назад не понимал что ему нада когда не написал в конце макроса end sub. Сейчас у меня есть макрос,который по идее убирает фильтры и раскрывает скрытые ячейки Sub Otkrit() Cells.AutoFilter Cells.EntireColumn.Hidden = False Cells.EntireRow.Hidden = False End Sub Этот макрос совершенно не реагирует на вместимое сводных таблиц(случайно обнаружил) и возможно еще много на что т.к. я не знаю как еще можно спрятать ячейки в экселе. Подскажите кстати какие там еще способы есть,все что я знаю это скрыть ячейки,поставить фильтр или сводная таблица. Последнее у меня вызывает ужас. помогите написать макрос который открывал бы все ячейки независимо от того каким образом они были скрыты ибо я сам этого сделать не могу (если кто-то решит помочь,то еще объясните работу макроса чтобы у меня в голове немного прибавилось мозга). Ну и вообще дайте пару ценных советов для новичка,только ж не сильно заумных. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:01 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Могут быть ещё скрытые листы. Причем если стоит защита на книгу с паролем, то нужно знать пароль, чтобы сделать лист видимым. Так-же может быть защита на лист, которая запрещает открывать скрытые строки, столбцы, автофильтры. Но для того, чтобы сосчитать символы во всех ячейках всех листов не нужно делать их видимыми или знать пароли, т.к. само по себе скрытие не делает их невидимыми для макросов. Всё зависит от того, как написан код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:08 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Пароли на сами файлы как правило мне предоставляются,а пароли на листы и книги легко узнать. Я работаю в переводческой компании и мне нужно использовать специальную прогу для подсчета символов (там повторы,процент совпадения с памятью) и именно она не видит все что скрыто,а только то что видно глазом и можно выделить. а т.к. делать нужно все быстро,то руками все открывать и просматривать не получается.Если же отправлять файлы на подсчет как они есть,то считается как правило даже далеко не половина содержимого и естественно оплата перевода понижается,что злит начальство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:23 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
А специальная прога которая считает, кто её разработчик, нельзя ли их напрячь этим вопросом. По идее, того кода, что у вас приведен, достаточно, но надо учитывать то, что код работает для текущего активного листа, а так-же могут быть проблемы с автофильтром в зависимости от того, установлен был вообще какой-либо фильтр на данном листе или нет. Если использовать данный макрос на чистом листе, сразу-же выскочит ошибка на первой строке кода. Поэтому надо как минимум добавить обработку ошибок, к примеру так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:58 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, Знаешь,что-то ты меня озадачил скрытыми листами) А про сводные таблицы знаешь что нибудь? Я заметил что в них фильтры не убираются,и ячейки не раскрываются если выделять весь лист и делай двойной клик на границе стольбцов/строк,плюс можно убрать отображение кнопок "+" и "-" и они тогда внешне просто похожи на обычные таблицы... ужас блин Но тем не менее за помощь благодарен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 11:59 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Кстати ещё могут быть очень скрытые листы (у них свойство Visible=xlSheetVeryHidden), их не видно в списке скрытых листов, их можно увидеть только зайдя в VBA. Чтобы их сделать видимыми, у них нужно устанавливать свойство Visible = xlSheetVisible ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:04 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, По поводу сводных таблиц могу лишь сказать, что они свою информацию берут из других обычных таблиц, данные по которым программа вроде как подсчитывает и считать тоже самое из сводной таблицы не резона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:06 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, Ну вообще эта программа еще сырая (по крайней мере я такой инфой располагаю) и пользоваться приходится тем,что есть. Достойной альтернативы пока тоже нет. если интересно то называется так : SDL Trados Studio 2009. По правде говоря мало кто из заказчиков знает о существовании этой проги,но те кто знает люди серьезные. Я еще мало что понимаю в этих макросах и почти все делаю через запись с последующим слепливанием частей этих записей в кучу) При записи макросов на замену символов для всей книги и для отдельного листа разницы в них не обнаружил...по этому у меня все работает только на отдельном листе.Кстати только что понял что делают твои исправления))спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:13 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, Дабы не быть назойливым у меня последний вопрос Sheets("лист2").Visible = True Вот это по идее должно делать видимым 2-й лист,но я не понимаю как написать чтобы делались видимыми все скрытые листы,чтобы не указывать их названия. Sheets(Array("temp1841513506", "лист1", "лист2", "лист3")).Select как я понимаю в этом случае просто выделяются листы,но опять же тут названия их и это не универсально. SelectedSheets.Visible = True если потом написать это,то получится раскрыть диапазон? С фильтрами я тоже не понимал,надо было указывать номер фильтра который нужно раскрыть, по этому я их просто выключил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 12:36 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greebDjon Player, я не понимаю как написать чтобы делались видимыми все скрытые листы,чтобы не указывать их названия. хотел на скорую руку написать макрос, а потом вспомнил, что писал уже такой в далеком 2002 году, вот взял из своей коллекции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Предполагается, что защита книги не стоит и файл не в общем доступе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 16:18 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, Спасибо большое)хоть я и не понимаю как он рабртает и еще даже не проверил))Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2011, 20:16 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greebDjon Player, Спасибо большое)хоть я и не понимаю как он работает и еще даже не проверил))УдачиОбщий смысл макроса такой. Он перебирает в цикле список всех листов активной книги и у каждого проверяет свойство Visible и у тех листов у которых оно не совпадает с xlSheetVisible, принудительно устанавливается xlSheetVisible. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2011, 13:53 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, а ведь после объяснения понятно стало) еще раз спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2011, 12:14 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, можно короче Sub Увидеть_все_листы() Dim sh As Worksheet For Each sh In ActiveWorkbook.Sheets sh.Visible = xlSheetVisible Next sh End Sub И вот это: вместо Cells.AutoFilter лучше sh.AutoFilterMode = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2011, 21:38 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 10:50 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player а так-же могут быть проблемы с автофильтром в зависимости от того, установлен был вообще какой-либо фильтр на данном листе или нет. Если использовать данный макрос на чистом листе, сразу-же выскочит ошибка на первой строке кода. Поэтому надо как минимум добавить обработку ошибок, к примеру так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. А так не надо обработчика: With ActiveSheet .AutoFilterMode = 0 .Columns.Hidden = False .Rows.Hidden = False End With ActiveSheet можно заменить на нужный лист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 11:01 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
ну мне на сасом деле надо был оне для отдельного листа,а для всей книги в целом,но все равно спасибо вот что я написал пытаясь соединить их Sub Danger() Dim sh As Worksheet For Each sh In ActiveWorkbook.Sheets sh.Visible = xlSheetVisible sh.AutoFilterMode = 0 sh.Columns.Hidden = False sh.Rows.Hidden = False sh.Rows.AutoFit sh.Columns.AutoFit Next sh End Sub последние строчки чисто для визуализации Прокоментируйте если не сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 11:23 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Нормально. Я и писал: "ActiveSheet можно заменить на нужный лист." Какие еще комменты тут нужны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 14:33 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Да я просто немного туповат и сразу не въехал) щас то уже дошло что к чему. Спасибо)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 15:36 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Знаете что я тут обнаружил) макрос выдает ошибку если на какой-то лист занят полностью диаграммой.Когда делаешь расположение диаграммы на отдельном листе, на этом листе нельзя использовать фильтры вообще,и строчка макроса насчет этих фильтров выдает ошибку... досадно) я то уж подумал что это универсальный макрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 16:55 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, вот для этого и существует обработчик ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 17:03 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
не ну так,то он ошибку не выдает. Это все из-за того что на листе,полностью занятом диаграммой, нельзя фильтры юзать в принципе (ну это я так думаю). Если эту диаграмму перенести на лист с данными,то все нормально работает. Скажи,это возможно как-то обойти? Если да,то я продолжу поиски решения) ну в принципе такие файлы редко приходят и мне руками их подготовить не в падло,но мы ведь не в каменном веке живем чтобы руками все делать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 17:45 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Djon Player, Дело в том, что понятие Sheets включает все виды листов, листы диаграмм, макросов 4.0, диалогов и т.д. Поэтому(если у Вас не только рабочие листы) лучше пользоваться конструкцией For Each sh In ActiveWorkbook.WorkSheets тогда она будет обрабатывать только рабочие листы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 17:51 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Знаете,я тут третий лишний) как в лесу брожу,пока носом не ткнете ниче не вижу... пичально конечно. Правда я на 3-х форумах написал это и только вы мне помогать стали. Я благодарен,узнал много новых вещей(ну это потому что я почти ниче не знаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 18:22 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, а почему "третий лишний"? Вам вроде стараются помочь. И на все Ваши вопросы(как мне показалось) отвечают. А в "Правда я на 3-х форумах написал это и только вы мне помогать стали.", просто не верю. На подобных форумах полно умных, добрых и отзывчивых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 18:33 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Я имел в виду,что вы по тропинке развития далеко от меня ушли. Это не попытка проявить неуважение. Прошу прощения если вы так считаете. И не буду спорить что вы внесли огромный вклад в решение моей проблемы,мои благодарности. У меня еще есть вопрос. Так как программа очень прожорливая до памяти,то лишние символы в файлах не нужны,это такие как цифры,буквы языка,на который переводится документ,точки там и т.д.(их все равно переводить не нужно). Но листы обычно заполнены формулами и если сразу начинать удалять все ненужное,то в ячейках остается что-то типа "#ИМЯ?" или подобное. И это воспринимается программой уже как материал для подсчета,хотя эти ячейки должны быть пустыми. Избежать этого можно путем сохранения листа на прежнее место,но что бы в ячейках оставались "значения" Вот я записал макрос на это. Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False если есть какой-нибудь более надежный или еще по какому-нибудь качеству лучший способ,не могли бы вы мне про него рассказать? В общем я спрашиваю ваше мнение по этому поводу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 19:05 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, есть такой способ:-) Cells.value=Cells.value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 21:19 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Вообще-то лучше использовать вместо cells - usedrange. И побыстрей и меньше памяти использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 21:28 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
А если внешний vbs скрипт написать, которому скармливаем путь к файлу xls, затем он через ADOX.Catalog получает список страниц, далее через ADODB.Recordset делаем к каждой странице select... с подсчетом ? Вроде как должно получиться. (вопрос к тем, кто понимает - о чем я :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 22:46 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
kuklpDjon Player, Дело в том, что понятие Sheets включает все виды листов, листы диаграмм, макросов 4.0, диалогов и т.д. Поэтому(если у Вас не только рабочие листы) лучше пользоваться конструкцией For Each sh In ActiveWorkbook.WorkSheets тогда она будет обрабатывать только рабочие листы.Спасибо, не знал, все никак не мог понять разницы между WorkSheets и Sheets, первая мысль была, что WorkSheets более короткое написание конструкции ThisWorkbook.Sheets, но практическое применение показывало, что это не так, а в хелпе не смотрел. Поэтому я сам всегда использовал Sheets вместо WorkSheets. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 02:05 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Что то я не понимаю как нужно использовать Cells.value=Cells.value но это не особо важно,главное что есть решение) И еще я не совсем понимаю что такое cells и usedrange. Я ведь макросы делаю преимущественно записью т.к. не разбираюсь. ну я понял что cells выбирает весь лист. range вроде это диапазон, по логике usedrange это используемый диапазон,но тогда получается что его сначала нужно задать? или я тут неправильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 14:17 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, >>Что то я не понимаю как нужно использовать >>Cells.value=Cells.value А так и использовать. Все формулы заменятся на значения. >>по логике usedrange это используемый диапазон,но тогда получается >>что его сначала нужно задать? или я тут неправильно понимаю? Немного неправильно:-) Написав usedrange, мы тем самым и задаем используемый диапазон. Т.е.: usedrange.value=usedrange.value Зачем нам присваивать значения заведомо неиспользуемым ячейкам? А Экс думать не умеет, что ему задай, то и сделает. Будет добросовестно менять пусто на пусто во всем листе. Есть еще понятия currentregion, area, но это уже совсем другая тема:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:51 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
kuklp, Забыл, перед usedrange нужно указывать лист, как то: sh.usedrange.value=sh.usedrange.value или, для общего случая например: sheets(1).usedrange.value... и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:55 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Возможно вы подумали что я на все забил уже и свалил,но это не так) Просто на работе времени не было,макросами я занимаюсь в свободное время, а дома вирусняк захавал файл hosts и инет не работал) Я так и не понял как сделать макрос с использованием sh.usedrange.value=sh.usedrange.value чтобы он на одином листе работал только. Я сделал так Sub Znachenia_for_sheet() ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveSheet.UsedRange.ClearFormats End Sub а потом перечитав сообщения я сделал еще такой вариант Sub Znatcheniya_for_sheet() With ActiveSheet .UsedRange.Value = .UsedRange.Value .UsedRange.ClearFormats End With End Sub для всей книги такой Sub Znachenia_for_book() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets sh.UsedRange.Value = sh.UsedRange.Value sh.UsedRange.ClearFormats Next sh End Sub а очистка формата для того чтобы визуально можно было различать обработанные листы от остальных и чтобы меньше файлы весили. Благодаря вам я узнал намного больше чем простым методом тыка,большое вам всем спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 14:12 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Впрочем, друг мой, защем? Защем Znatcheniya_for_sheet() делается с With ActiveSheet? - определённо, активен только _один_ лист... Защем Znachenia_for_book() нужен? Ибо _это_ делается быстрее через ADODB... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 15:16 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
AndreTM, Для меня ADODB и сами макросы являеются темным лесом. Не нужно у меня спрашивать зачем ибо я делаю как могу,а не как нравится.И в первую очередь меня волнует достижение цели,а не средства на это. В виду отсутствия смайликов мое сообщение может быть воспринято как попытка кого-нибудь,но прошу учесть что оскорбление не является моей целью)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 15:34 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
недописал половину сообщения... ну надеюсь все поняли что я имел в виду) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 15:39 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
AndreTMВпрочем, друг мой, защем? Защем Znatcheniya_for_sheet() делается с With ActiveSheet? - определённо, активен только _один_ лист... Защем Znachenia_for_book() нужен? Ибо _это_ делается быстрее через ADODB...Позвольте не согласиться:-) 1) ActiveSheet - не обязательно лист, с которого запущен макрос. Для того и ActiveSheet. Но лучше конкретный лист, без его активации. Быстрей, технологичней(как у автора в Znachenia_for_book). 2) (ADODB)Ну мож, еще и операционку семейства UNIX прикрутить, а то уж слишком просто, одна строка все формулы, ссылки в значения преобразовывает. Не, можно конечно, асфальтовым катком носовой платок погладить... Я предпочитаю утюг:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 16:43 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
kuklp, И еще, скажем просьба. Покажите столь же простой код, как у автора Znachenia_for_book(), к-рый хотя бы в полтора раза быстрей работал в книге из десятка(ну пусть сотни) листов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2011, 16:52 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
kuklp, ActiveSheet, как я понимаю,это лист,который я выбрал и он мне в данный момент показывается на экране.(так ведь?) А под конкретным листом вы имеете в виду просто какой-то лист из книги, имя которого нужно будет указать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 13:45 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greebkuklp, ActiveSheet, как я понимаю,это лист,который я выбрал и он мне в данный момент показывается на экране.(так ведь?) А под конкретным листом вы имеете в виду просто какой-то лист из книги, имя которого нужно будет указать?Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 15:36 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
ну макросы Sub Znatcheniya_for_sheet() и Sub Znatchenia_for_sheet() сделаны как раз для работы с выделенным листом,т.к. после на этими листами проводится еще удаление цифр,непереводимых символов и иногда английских букв. В общем чтобы все глазами видеть и предотвращать косяки, уж извините, но машине я не верю) как уже говорилось думать она не умеет)) а учитывая что все нужно делать быстро, то вариант когда нужно указывать листы руками не подходит(не, ну иногда подходит,но эт оредко бывает). Удаляющий макрос кстати выглядит так,это нормально?он 100% записанный. Cells.Replace What:="1", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False И еще вопрос. Если в листе слишком много строк, его приходится разбивать на несколько листов и сохранять в отдельные книги. Сложный ли будет макрос для разбивания листа по 2000 строк начиная с конца в отдельные листы? Сохранить их в отдельные кники я и руками смогу))Хотя я участия в создании этих макросов практически не принимаю,но я не прошу чтобы за меня все делали, просто наставления) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 15:57 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 16:55 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Ну это часть его)) там еще 9 строчек в нем таких же)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 16:58 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, 9 строчек не лучшее решение, хотя бы цикл сделать и то уже получше будет, возможно можно ещё как-то попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:03 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Проблема в том что я про циклы вообще ниче не знаю. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Здесь используется цикл? а то мой макрос на транслитерацию из 60 строк состоит на замену... И я знаю что это плохо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:14 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, ага, в этом примере комбинация for next и есть цикл, он пробегается по 33-ем элементам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:18 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. Тут очень много скобочек и мне мало что понятно. Я могу сделать только так. но я даже не знаю что потом с этим делать... Вставить между sub и end sub? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:30 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, функцию вы верно преобразовали, но конкретно для вашей ситуации думаю лучше сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 00:15 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Ваш макрос на больших листах быстрее работает,не сильно правда,но в больших объемах экономия времени все же присутствует))Спасибо за помощь) По поводу разбивания большого листа на мелкие по 2000 строк Код: plaintext 1. 2. 3. 4. 5. Сначала я думал сделать так,чтобы он автоматически разбивал весь большой лист,это бы делалось повторением макроса пока ошибка не выскочит,т.к в листе осталось бы меньше строк чем 2000,но я не знаю как заставить его повторяться и вроде тогда нужно поставить обработчик ошибок после строчки Код: plaintext 1. так что я подумал что можно просто стоять на большом листе и несколько раз подряд руками запускать макрос,вроде так проще)) Я вот только не уверен что есть понятия "последняя строка" и "последний лист".Да и про диапазон я не уверен "последняя:2000 строк вверх" Скажите,это вообще возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 12:46 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, лишь несколько раз прочитав ваше предыдущее сообщение, я вроде (хотя не уверен), понял о чем речь. Вы хотите один лист, в котором много тысяч строк, разбить на несколько листов, чтобы в них было не более 2 тысяч строк? Понятия последняя строка не существует, есть такие понятия как последняя строка содержащая данные, которую можно вычислить, так-же есть максимальный номер строки, к примеру в Excel 2003 это 65535. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 16:13 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
вот смотрите какой макрос мне предложили использовать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Правда у меня эксель зависает когда я пытаюсь закрыть документ без сохранения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 16:19 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Вы правильно поняли) я писал про цель этого макроса немного выше авторИ еще вопрос. Если в листе слишком много строк, его приходится разбивать на несколько листов и сохранять в отдельные книги. Сложный ли будет макрос для разбивания листа по 2000 строк начиная с конца в отдельные листы? Сохранить их в отдельные кники я и руками смогу))Хотя я участия в создании этих макросов практически не принимаю,но я не прошу чтобы за меня все делали, просто наставления) хотя надо было еще раз написать, а то и правда получилось непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 16:28 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
"greeb" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:11001374@sql.ru... > Автор: greeb > вот смотрите какой макрос мне предложили использовать > > Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 16:34 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, я так понял основная цель лист разбить на отдельные файлы. Вот побырому макререкодером записал и чуть подправил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Один раз запускаете макрос на нужном листе, будет создана книга куда перенесутся данные первых 2000 строк. После этого каждый раз нажимаете комбинацию Ctrl+Y и получаете ещё очередную порцию из новых книг с двумя тысячами строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 16:51 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
на самом деле это я написал там With activesheet, просто оригинальный вариант работал для "лист1" Макрос кстати вроде не глючит. Если мне нужно переносить все столбцы, то тогда ведь можно будет убрать необходимость их указания? iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row (эта строка -- ошибка) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 17:13 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
> Автор: greeb > вот в общем какой он сейчас Еще раз о системе координат: Ты запрашиваешь размер блока(сколько строчек, по-русски ) для переноса я на это ввожу 1000 Ты вычисляешь количество блоков по тысяче строк из используемых на листе и в цикле(А!!! теперь я понял ) начинаешь переносить блоки, начиная со второго. Насчет столбцов - я погорячился. Ты выделяешь всю строку и вырезаешь/вставляешь всю строку. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 17:27 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
Разъясните мне пожалуйста (или ссылку) строчку Код: plaintext Код: plaintext тогда я думаю можно будет подставить "x" в макрос вместо "2000" и я смогу регулировать количество переносимых строчек.надеюсь можно? как-то так: Sub Вырезка_Части_текста_в_новую_книгу() Dim wb As Workbook Set wb = ActiveWorkbook Rows("1:x").Copy Workbooks.Add Cells(1, 1).Insert Shift:=xlDown wb.Activate Rows("1:x").Delete Set wb = Nothing End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 18:04 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
просто макрос Djon Player'a мне кажется самым простым и понятным) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 18:06 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
F1 не работает? Value Meaning 0 A formula 1 A number 2 Text (a string) 4 A logical value (True or False) 8 A cell reference, as a Range object 16 An error value, such as #N/A 64 An array of values ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 18:06 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
greeb, Всё есть в справке. Так-же в коде вы можете поставить курсор на нужную команду и нажать комбинацию Ctrl+I, высветится подсказка по параметрам. С помощью комбинации Ctrl+J можно увидеть доступный список команд, функций, констант и прочего. Попробуйте такой код, состоящий из двух процедур, его надо поместить в модуль: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Самым первым нужно запустить макрос Ввод_количества_строк() и ввести нужное количество строк. А дальше можно запускать макрос Вырезка_части_текста_в_новую_книгу() и потом уже комбинацией Ctrl+Y запускать его повторно столько раз сколько нужно. При желании можно сделать две процедуры, одну запускаем и в ней задаем количество строк. А другая процедура использует ранее введенное значение и вопросы не задает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 23:46 |
|
||
|
Excel. Макрос. Открытие всех ячеек.
|
|||
|---|---|---|---|
|
#18+
В справке все есть,не спорю,только она на английском. В английском я не силен. Сейчас я даже зная ответ не могу его там найти. Да и инфа на русском для меня не особо понятна.В общем для того,чтобы не задавать тупых вопросов я решил прочитать самоучитель по vba. Благодарю всех за помощь и за то,что вы не посылали меня гуглить,а объясняли и разжевывали. Вы как-то очень глубоко вникаете в вопрос, ну результат конечно получается лучше ожидаемого.Но для меня прада не привычно такое отношение. Я вам всем очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2011, 18:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=61&tid=2176664]: |
0ms |
get settings: |
9ms |
get forum list: |
26ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 528ms |

| 0 / 0 |
