|
|
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Есть такая задача: Много xls файлов необходимо переделать (изменить несколько формул на двух листах). Сама задача кое-как решена, а вот с производительностью - туго. На этапе тестирования (objExcel, в смысле Application, был Visible=True, вроде все в норме), но как только для конечной версии я поставил False, то производительность упала раз в 5. Попробовал оставить приложение видимым, но свернул в трей - такая же, извините, хрень! В чем может быть проблема? Всю голову сломал!! Помогите люди добрые, можить кто с таким уже сталкивался (перелопатил кучу форумов-ничего не нашел - наверное я где-то накосячил) Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 15:51 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Я помню у меня был случай с производительностью, при Код: plaintext когда Excel файл был выделенным или галочка "разметка страницы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 16:18 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Valeriu, Разметки страницы нет (вид-обычный) Насчет Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 16:32 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > Я скоро чёкнусь! :) Отключи пересчет формул, перед изменением, и включай перед сохранением -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 10:20 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, Спасибо за совет, только появляется ошибка: "Run-time error 1004 Нельзя установить свойство Calculation класса Application". Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 14:07 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > Игорь Горбонос, > > Спасибо за совет, только появляется ошибка: "Run-time error 1004 Нельзя установить > свойство Calculation класса Application". > objExcel.Calculation = xlManual 'ОШИБКА Странно, макрос записывает с этой константой, а в свойствах ссылается на эту: Const xlCalculationManual = -4135 (&HFFFFEFD9) Member of Excel.XlCalculation Хотя по значениям они одинаковы, может у тебя эта константа "перебивается" одноименной, но с другим значением? Попробуй ещё свойство листа: Property EnableCalculation As Boolean Member of Excel.Worksheet Но мне свойство листа не очень нравится, т.к. в моей практике, формулы, практически всегда, не ограничиваются одной книгой. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 14:42 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос Странно, макрос записывает с этой константой, а в свойствах ссылается на эту: Const xlCalculationManual = -4135 (&HFFFFEFD9) Member of Excel.XlCalculation Хотя по значениям они одинаковы, может у тебя эта константа "перебивается" одноименной, но с другим значением? Значение как раз -4135 (при дебаге смотрел) Код: plaintext 1. Почему при видимом приложении, при обработке всех событий, при перерисовке окна все работает в РАЗЫ быстрее, чем при скрытом окне, половине реакций в False. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 14:58 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv Если можешь, выложи код или пример, попробую посмотреть. Так сказать что-либо сложно. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:03 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:10 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Это VB или VBA? Так, из интереса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:18 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > Игорь Горбонос, > > > К сообщению приложен файл (ОН.RAR): cкачать. Размер - 2Kb А шаблон ексельного файла? И по коду: 1 - подключи в референсах библиотеку Екселя и объяви переменные не как Variant и Object, а как было закоментированно. 2 - Объяви себе ещё переменную типа Sheet и от неё начинай назначать формулы, а не от книги Напимер так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:22 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: VladConn > Это VB или VBA? Так, из интереса. VB -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:26 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Еще, поставьте Option Explicit и замените Label3 = F Label6 = G на Label3.Value = F Label6.Value = G Если ваш код внутри книги, то зачем создавать еще один Excel: Set objExcel = CreateObject("Excel.Application") ? Можно обойтись и так: Set objExcel = ThisWorkbook.Application Или берите GetObject, а не CreateObject. Теперь, полагая, что ваш objExcel декларирован внутри некоей процедуры, все тело которой, за исключением заголовка почему-то, вы показали, то вот это: If G <> 0 Then objExcel.Application.Quit Set objExcel = Nothing End If писать не надо. Достаточно так: If G <> 0 Then objExcel.Application.Quit End If Что, скорее всего, верно и в отношении Set objBook = Nothing Вне вашей процедуры это добро само установится в Nothing. И еще вопрос: если вы в цикле пишете, Label3.Visible = True Label4.Visible = True Label5.Visible = True Label6.Visible = True то где в цикле у вас Label3.Visible = False Label4.Visible = False Label5.Visible = False Label6.Visible = False? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:35 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос И по коду: 1 - подключи в референсах библиотеку Екселя и объяви переменные не как Variant и Object, а как было закоментированно. Программка будет раздаваться многим пользователям для коррекции ранее выданных файлов, поэтому не хотелось бы привязываться к определенной версии Екселя (правда придется все используемые константы еще определить самому (та же xlCalculationManual = -4135). Ведь, насколько я понимаю, подключив Библиотеку версии 9.0, программка не заработает ни на более старых, ни на более новых версиях (уж извините, новичок в программировании :)) п.2 сейчас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:46 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
На более новых версиях заработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:53 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
И вообще-то, для таких случаев предусмотрен Setup. Есть такая хитрость! Тогда на любой машине заработает, если не случится Hell DLL, что маловероятно. Так вы надеетесь раздать народу вашу программу без инсталляции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:55 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > Программка будет раздаваться многим пользователям для коррекции ранее выданных файлов, поэтому не хотелось бы > привязываться к определенной версии Екселя (правда придется все используемые константы еще определить самому (та же > xlCalculationManual = -4135). Ведь, насколько я понимаю, подключив Библиотеку версии 9.0, программка не заработает ни > на более старых, ни на более новых версиях (уж извините, новичок в программировании :)) У меня програмка, кочевала с таким референсом с 2000 по 2003 офис, никаких проблем не было, но не знаю как сейчас в новых версиях, хотя по моему в 2007 офисе должна работать, т.к. ничего экзотического не используется взял пустой файл, назхвал два листа соответственно Форма 2 и Форма 3, "размножил" его до 392 штук и запустил, программа обработала все файлы на 0:03:45 Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 15:58 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
VladConn, спасибо за советы VladConn Если ваш код внутри книги, то зачем создавать еще один Excel: Set objExcel = CreateObject("Excel.Application") ? Это VB, а не VBA, как было сказано выше. Код не в книге. У пользователя во время запуска может быть уже открыть Ёксель, поэтому запускаю новый экземпляр сразу (писать проверку на то, открыт Ёксель или нет, считаю ненужным) VladConn Теперь, полагая, что ваш objExcel декларирован внутри некоей процедуры, все тело которой, за исключением заголовка почему-то, вы показали, то вот это: If G <> 0 Then objExcel.Application.Quit Set objExcel = Nothing End If писать не надо. Достаточно так: If G <> 0 Then objExcel.Application.Quit End If Я показал не только тело :)) Выложен весь проектик (в архиве) Насчет Set objExcel = Nothing: предпочитаю всегда принудительно освобождать ресурсы (вреда от этого не будет). Часто приходится изпользовать свои же готовые проектики для других целей, где objExcel может быть глобальной переменной, а оставлять висеть Ёксель в процессах вроде не очень хорошо VladConn И еще вопрос: если вы в цикле пишете, Label3.Visible = True Label4.Visible = True Label5.Visible = True Label6.Visible = True то где в цикле у вас Label3.Visible = False Label4.Visible = False Label5.Visible = False Label6.Visible = False? См. выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:05 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
VladConn, VladConn И вообще-то, для таких случаев предусмотрен Setup. Есть такая хитрость! Тогда на любой машине заработает, если не случится Hell DLL, что маловероятно. Так вы надеетесь раздать народу вашу программу без инсталляции? Не считаю эту программку достойной инсталляции :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:08 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > К сообщению приложен файл (XLS.rar): cкачать. Размер - 18Kb твой шаблон размножил до 300 штук, отработал за 0:04:04 Это нормально? или тебе нужно быстрее? -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:15 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, автор твой шаблон размножил до 300 штук, отработал за 0:04:04 Это нормально? или тебе нужно быстрее? Во первых, спасибо за корректировки кода. Далее: Скорость осталась такая же как и была. Файлов может быть порядка десятков тысяч :(, поэтому хотелось бы побыстрее. Я тестил на 6 файлах, так вот по таймеру objExcel.Visible=False 26 сек, а objExcel.Visible=True 4сек!!!!! Я думаю что и при Вашей выборке в 300 шт результат будет намного меньше, чем 0:04:04. Блин, я просто не понимаю, в чем засада!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:22 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
> Автор: MxSv > Во первых, спасибо за корректировки кода. > Далее: Скорость осталась такая же как и была. Файлов может быть порядка десятков тысяч :(, поэтому хотелось бы > побыстрее. на таком количестве, врядли получится быстро. Попробуй посмотреть не в сторону корректировки готового файла, а в сторону распространения изначально "правильного" шаблона, что-бы не нужно было исправлять. > > Я тестил на 6 файлах, так вот по таймеру objExcel.Visible=False 26 сек, а objExcel.Visible=True 4сек!!!!! Я думаю > что и при Вашей выборке в 300 шт результат будет намного меньше, чем 0:04:04. Блин, я просто не понимаю, в чем > засада!!! при установке objExcel.Visible=True результат: --------------------------- Project1 --------------------------- 0:04:19 --------------------------- ОК --------------------------- -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:38 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
автор на таком количестве, врядли получится быстро. Попробуй посмотреть не в сторону корректировки готового файла, а в сторону распространения изначально "правильного" шаблона, что-бы не нужно было исправлять. Как говорится, от косяков не зарекайся! Тем более обидно, что ошибся не я, а разработчики анкетирования. (изначально у них были ошибки в ответах и в системе оценивания) автор при установке objExcel.Visible=True результат: --------------------------- Project1 --------------------------- 0:04:19 --------------------------- ОК --------------------------- Очень интересно! У Вас время почти одинаковое. Что за ......! Сейчас тоже натравлю на 300 файлов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:51 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
336 файлов, PVI 3Гг, 256Mb, Visible=True:Time=0:03:50 Причем, как только делаешь активным любое другое окно, а не Ёксель, процесс обработки форм засыпает (скорость падает ужасно). Делаешь активным Ёксель-опять летает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 16:59 |
|
||
|
Помогите, плз с Ёкселем (Visible=False или True)-Косяк у меня :((
|
|||
|---|---|---|---|
|
#18+
при установке objExcel.Visible=False и введения новой переменной в которой хранится путь к папке sPath = Dir1.Path результат(ну и наверное самого главного, выключение музыки :) ): --------------------------- Project1 --------------------------- 0:03:22 --------------------------- ОК --------------------------- переделал ещё немного, в варианте с FSO --------------------------- Project1 --------------------------- 0:02:16 --------------------------- ОК --------------------------- В оригинальном варианте: --------------------------- Project1 --------------------------- 0:02:10 --------------------------- ОК --------------------------- Во время работы комп не трогал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 17:18 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35604725&tid=2161725]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 370ms |

| 0 / 0 |
