Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel прекращение работы window-й / 14 сообщений из 14, страница 1 из 1
30.12.2012, 13:10
    #38097672
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Система win7 x64
excel2010
строк 56тыс, происходит объединение 4 ячеек со сложным форматированием.

Суммарно 40 циклов, продолжительность каждого от 5-до 20 мин.
После каждого пишет в пром.сайв--
Произвольно отваливается--Excel прекратил работу?
Вопрос как отключить прекращение зависших программ или это косяк работы макроса?
...
Рейтинг: 0 / 0
30.12.2012, 14:04
    #38097688
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Надо оптимизировать макрос. Выложите пример в 20 строк - что есть и что надо получить.
...
Рейтинг: 0 / 0
30.12.2012, 16:04
    #38097711
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й

Код: vbnet
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.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
Public Sub Formtt3(n_workbook) ', n_vxod, v_end)
  Dim rfont(1 To 1022, 0 To 35000) As Byte
  Dim rock5(1 To 80) As Long
  Application.Calculation = xlCalculationManual
  n_workbook = 1
  Sheets(n_workbook).Select
  iLastCell_4 = Worksheets(n_workbook).Range("A1:A65000").End(xlDown).Row 
  j_tek = 1
  yy = 1
  While yy < iLastCell_4 
   yy = yy + 950
23:      first_s = Left(Worksheets(n_workbook).Cells(yy, 3).Value, 1)
   If (first_s <> "~") Then rock5(j_tek) = yy: j_tek = j_tek + 1 Else: yy = yy - 1: GoTo 23
            
  Wend
  rock5(j_tek) = iLastCell_4
 '---------------------------------
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
 'Application.EnableEvents = False
 '---------------------------------
  n_vxod = 1
For kk = 1 To j_tek - 1 
  v_end = rock5(kk)
  Application.Calculation = xlCalculationManual
  n_workbook = 1
  Sheets(n_workbook).Select
  Columns("J:J").ColumnWidth = 51.43
  Columns("K:K").ColumnWidth = 95.43
  iLastCell_4 = Worksheets(n_workbook).Range("A1:A65000").End(xlDown).Row '&#234;&#238;&#235;_&#226;&#238; &#237;&#224; 4&#236; &#235;&#232;&#241;&#242;&#229;
  j_schet = 0
  j_nach = 0
  s = ""
  For j = n_vxod To v_end 'iLastCell_4 
   If j = n_vxod Then j_r = 1 Else j_r = j - n_vxod 
   first_s = Left(Worksheets(n_workbook).Cells(j, 3).Value, 1)
   If first_s = "~" Then
                       If j_nach = 0 Then j_nach = j - 1 Else j_schet = j_schet + 1

   'Application.StatusBar
   
  If (j_nach > 0) Or (j_schet > 0) Then s = Worksheets(n_workbook).Cells(j_nach, 2).Value + " "
                                       j_format = 1 ' &#241;&#247;&#229;&#242;&#247;&#232;&#234; &#239;&#238; &#238;&#244;&#238;&#240;&#236;&#235;&#229;&#237;&#232;&#254; &#241;&#243;&#236;&#224;&#240;&#237;&#251;&#233;
                                       l1 = Len(Worksheets(n_workbook).Cells(j_nach, 2).Value)
                                       If j_nach = n_vxod Then zik = 1 Else zik = j_nach - n_vxod
                                       'If j_nach = v_end Then zik = v_end
                                       rfont(zik, 0) = 1 ' &#239;&#240;&#232;&#231;&#237;&#224;&#234; &#231;&#224;&#239;&#238;&#235;&#237;&#229;&#237;&#232;&#255;
                                       's_adr5 = "B" + Right(Str(j_nach), Len(Str(j_nach)) - 1) 
                                      ' Range (s_adr5)
                                        For qq = 1 To l1
                                             If Worksheets(n_workbook).Cells(j_nach, 2).Characters(qq, 1).Font.Bold = True Then rfont(zik, j_format) = 2
                                            If Worksheets(n_workbook).Cells(j_nach, 2).Characters(qq, 1).Font.Italic = True Then rfont(zik, j_format) = 3
                                            j_format = j_format + 1
                                        Next qq
                                        j_format = j_format + 1 
                                       For Z = 1 To j_schet + 1
                                          l2 = Len(Worksheets(n_workbook).Cells(j_nach + Z, 1).Value)
                                          For qq = 1 To l2
                                            rfont(zik, j_format) = 2 '&#239;&#238; ~ &#230;&#232;&#240;&#237;&#251;&#236;
                                            j_format = j_format + 1
                                          Next qq
                                          l3 = Len(Worksheets(n_workbook).Cells(j_nach + Z, 2).Value)
                                          For qq = 1 To l3
                                            If Worksheets(n_workbook).Cells(j_nach + Z, 2).Characters(qq, 1).Font.Bold = True Then rfont(zik, j_format) = 2
                                            If Worksheets(n_workbook).Cells(j_nach + Z, 2).Characters(qq, 1).Font.Italic = True Then rfont(zik, j_format) = 3
                                            j_format = j_format + 1
                                          Next qq
                                         'Worksheets(n_workbook).Cells(j_nach, 11).Value = Worksheets(n_workbook).Cells(j_nach, 11).Value + " " + Worksheets(n_workbook).Cells(j_nach + Z, 1).Value + " " + Worksheets(n_workbook).Cells(j_nach + Z, 2).Value + ";"
                                         j_format = j_format + 1 '&#243;&#247;&#229;&#242; ;
                                         'With Worksheets(n_workbook).Cells(j_nach, 11)
                                         '  .Characters(l1 + 1, l2 - 1).Font.Bold = True
                                         'End With
                                         a = Worksheets(n_workbook).Cells(j_nach + Z, 1).Value + " " + Worksheets(n_workbook).Cells(j_nach + Z, 2).Value + ";"
                                         s = s + a
                                         j_format = j_format + 1
                                        Next Z
                                        Worksheets(n_workbook).Cells(j_nach, 11).Value = s
                                        Worksheets(n_workbook).Cells(j_nach, 11).Font.Bold = False
                                        Worksheets(n_workbook).Cells(j_nach, 11).Font.Italic = False
                                        
                                     Else: sos1 = Right(Str(j), Len(Str(j)) - 1)
                                           sos2 = "A" + sos1 + ":B" + sos1
                                           Range(sos2).Select
                                           Selection.Copy
                                           Range("J" + sos1).Select
                                           ActiveSheet.Paste
                                           
                                           j_schet = 0
                                           j_nach = 0
                                           s = ""
                                           
                                     End If



 Next j

For j = n_vxod To v_end
  If j = n_vxod Then j_r = 1 Else j_r = j - n_vxod ' &#224;&#228;&#240;&#229;&#241;&#224;&#246;&#232;&#255; &#237;&#224; &#236;&#224;&#241;&#241;&#232;&#226; &#228;&#235;&#255; &#244;&#238;&#240;&#236;&#224;&#242;&#232;&#240;&#238;&#226;&#224;&#237;&#232;&#255;
  If rfont(j_r, 0) = 1 Then
        fff_0 = Len(Worksheets(n_workbook).Cells(j, 11).Value)
        For qq = 1 To fff_0
           If rfont(j_r, qq) = 2 Then
            With Worksheets(n_workbook).Cells(j, 11)
                .Characters(qq, 1).Font.Bold = True
            End With
           End If
           '----------------
           If rfont(j_r, qq) = 3 Then
            With Worksheets(n_workbook).Cells(j, 11)
                .Characters(qq, 1).Font.Italic = True
            End With
           End If
        Next qq
  End If
Next j
n_vxod = v_end ' &#239;&#229;&#240;&#229;&#228;&#224;&#229;&#236; &#237;&#224; &#241;&#235;&#229;&#228;&#254;&#249;&#243;&#254;
 '===========================
 ChDir "X:\_11"
    ActiveWorkbook.SaveAs Filename:= _
        "X:\_0807" + Str(kk) + ".xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
 'ActiveWorkbook.Save
 '============================
Next kk '
Application.ScreenUpdating = True
 Application.Calculation = xlCalculationAutomatic
 ActiveWorkbook.Save
End Sub


...
Рейтинг: 0 / 0
30.12.2012, 16:15
    #38097716
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Принцип такой:нужно объединить ячейки со смешанным содержимым.
1. считаем кол-во шт
2. разбиваем на части- по 950( массив падает)
3.цикл по j смотрим если ячейка без тильды пишем так, если с тильдой объединяем в одну
4.Циклы по qq--снятие форматирования в основной ячейке и в тех где есть тильда(для дальн объединения)
5. Второй цикл по j-- наложение форматирования.

В ручном работает, даже весь документ отдаешь(т.е по посл. ячейку)-работает, но падает при половине или чуть больше.
"Работа excel прекращена"

Я уже задавал вопрос о форматировании смешанных ячеек.
...
Рейтинг: 0 / 0
30.12.2012, 16:19
    #38097717
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Вот что я получить должен


строк 50341
...
Рейтинг: 0 / 0
30.12.2012, 16:35
    #38097721
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Сейчас вручную сижу, без блока kk делаю, т.к. полдня уже похоронил
важно понять откуда "ноги растут".
...
Рейтинг: 0 / 0
30.12.2012, 19:35
    #38097794
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
alex_lipetsk,
ноги растут из спины. Можно полновесный файлик "на поиграться"?
...
Рейтинг: 0 / 0
30.12.2012, 21:58
    #38097875
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
alex_lipetsk,

два полезных тега - SRC и SPOILER.
...
Рейтинг: 0 / 0
31.12.2012, 19:19
    #38098192
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
big-duke,

нет не могу, заказчик против будет.
Работу я сделал. Но так и не понял причину--спасибо отликнувшимся
...
Рейтинг: 0 / 0
31.12.2012, 21:46
    #38098236
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
alex_lipetsk,

Вы поняли о чём говорил big-duke ?
Об уважении к форумчанам
...
Рейтинг: 0 / 0
01.01.2013, 17:20
    #38098368
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
alex_lipetskbig-duke,

нет не могу, заказчик против будет.
Работу я сделал. Но так и не понял причину--спасибо отликнувшимся

Вообще-то это я просил, а не big-duke.
Excel падает из-за количества форматов в ячейках.

ЗЫ: Была идея подключить ворд к этой задаче. Но без файлика, хотя-бы на 5k записей, не интересно :)
...
Рейтинг: 0 / 0
04.01.2013, 20:20
    #38100256
alex_lipetsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
Связан, соглашением, (
Вопрос: а почему тогда показывает и не падает в ручную до 5000 за раз.

Если что-то накосячил с оформлением, сорри не хотел
...
Рейтинг: 0 / 0
04.01.2013, 20:49
    #38100268
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
> alex_lipetsk
> Вопрос: а почему тогда показывает и не падает в ручную до 5000 за раз.

Возможно, при программной обработке не укладывается в какие-то тайм-ауты и "наступает себе на хвост".
Был у нас в уезде аналогичный случай, правда не с экселем, а с вордом. При вставке из БД и форматировании таблички ~ 2к х 10 ( изменение размера шрифта, ширины столбцов и выравнивания в ячейках ) ворд падал с малоинформативным сообщением об ошибке.
Тогда решили проблему вставкой sleep после команд форматирования.
...
Рейтинг: 0 / 0
04.01.2013, 20:51
    #38100270
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel прекращение работы window-й
alex_lipetsk,

В МОДУЛЕ НЕ ОЧЕНЬ РАЗОБРАЛАСЬ, НО

--ПРОВЕРЬТЕ ПЕРВЫЙ СТОЛБИК НА ПУСТЫЕ ЯЧЕЙКИ
--ПРОВЕРЬТЕ СЛОВА ПО КОТОРЫМ ОЧЕНЬ МНОГО ТИЛЬД(СТРОК ПРОДОЛЖЕНИЙ)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel прекращение работы window-й / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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