Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Из-за формулы, при активации макроса, виснет Ексель. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Из-за формулы, при активации макроса, виснет Ексель.
bear_ukraine Дата: Вторник, 09.12.2014, 21:29 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

День добрый.

Имеется проблема, причину которой понять не могу.

Проблема возникает, если лист защищен (даже если поставлены все галочки).

Есть формула в ячейке М3 в файле, скачать который можно по линку ниже, вида
Код
=ЕСЛИ(И(I3>0;J3=0;K3=0;L3=0);I3;ЕСЛИ(И(I3>0;J3>0;K3=0;L3=0);J3;ЕСЛИ(И(I3=0;J3=0;K3>0;L3=0);K3;ЕСЛИ(И(I3=0;J3=0;K3>0;L3>0);L3;ЕСЛИ(И(I3>0;J3=0;K3>0;L3=0);СУММ(I3;K3);ЕСЛИ(И(I3>0;J3>0;K3>0;L3=0);СУММ(J3;K3);ЕСЛИ(И(I3>0;J3>0;K3>0;L3>0);СУММ(J3;L3);ЕСЛИ(И(I3>0;J3=0;K3>0;L3>0);СУММ(I3;L3);0))))))))


Имеется макрос, который сохраняет лист в отдельный файл без формул, только со значениям.
[vba]
Код
Sub SaveActiveSheet()
           On Error Resume Next

           Dim Sh As Worksheet: Set Sh = ActiveSheet
           If Sh Is Nothing Then Exit Sub
           SU False: DA False
           NewFileName = GetNewFileName
           If Len(NewFileName) > 0 Then
               Sh.Copy
               ActiveWorkbook.ActiveSheet.Cells.Copy
               ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
               ActiveWorkbook.SaveAs NewFileName
               ActiveWorkbook.Close False
           End If
           SU True: DA True: Set Sh = Nothing
End Sub

Sub SU(ByVal Update_Screen As Boolean): Application.ScreenUpdating = Update_Screen: End Sub
Sub DA(ByVal Display_Alerts As Boolean): Application.DisplayAlerts = Display_Alerts: End Sub

Function GetNewFileName() As String
           GetNewFileName = "":    InitialFileName = "c:\": NewFileExt = ".xlsx"
           GetNewFileName = Application.GetSaveAsFilename(InitialFileName, _
                          "Листы Excel (*" & NewFileExt & "),", , _
                          "Введите имя файоа", "Сохранить лист")
           If VarType(GetNewFileName) = vbBoolean Then GetNewFileName = "": Exit Function
           If GetNewFileName = "False" Or GetNewFileName = "Ложь" Then GetNewFileName = ""
End Function
[/vba]
Суть проблемы - Когда клацаю на кнопку аля "Сохранить ваш заказ...", то Ексель виснет. Открывает мне еще 2 дополнительные вкладки на панели задач и думает думает думает. Как только формулу убираю, макрос сохранения листа тут же начинает работать без зависания Ексель.
Как решить данную проблему?

Я вырезал лист из прайса, где возникает проблема.
Файл можно скачать тут, так как он весит 150кб
Делаю все в 2010 Екселе.

Прошу помочь понять в чем проблема и как ее решить.
Спасибо большое!


Сообщение отредактировал bear_ukraine - Вторник, 09.12.2014, 21:52
 
Ответить
СообщениеДень добрый.

Имеется проблема, причину которой понять не могу.

Проблема возникает, если лист защищен (даже если поставлены все галочки).

Есть формула в ячейке М3 в файле, скачать который можно по линку ниже, вида
Код
=ЕСЛИ(И(I3>0;J3=0;K3=0;L3=0);I3;ЕСЛИ(И(I3>0;J3>0;K3=0;L3=0);J3;ЕСЛИ(И(I3=0;J3=0;K3>0;L3=0);K3;ЕСЛИ(И(I3=0;J3=0;K3>0;L3>0);L3;ЕСЛИ(И(I3>0;J3=0;K3>0;L3=0);СУММ(I3;K3);ЕСЛИ(И(I3>0;J3>0;K3>0;L3=0);СУММ(J3;K3);ЕСЛИ(И(I3>0;J3>0;K3>0;L3>0);СУММ(J3;L3);ЕСЛИ(И(I3>0;J3=0;K3>0;L3>0);СУММ(I3;L3);0))))))))


Имеется макрос, который сохраняет лист в отдельный файл без формул, только со значениям.
[vba]
Код
Sub SaveActiveSheet()
           On Error Resume Next

           Dim Sh As Worksheet: Set Sh = ActiveSheet
           If Sh Is Nothing Then Exit Sub
           SU False: DA False
           NewFileName = GetNewFileName
           If Len(NewFileName) > 0 Then
               Sh.Copy
               ActiveWorkbook.ActiveSheet.Cells.Copy
               ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
               ActiveWorkbook.SaveAs NewFileName
               ActiveWorkbook.Close False
           End If
           SU True: DA True: Set Sh = Nothing
End Sub

Sub SU(ByVal Update_Screen As Boolean): Application.ScreenUpdating = Update_Screen: End Sub
Sub DA(ByVal Display_Alerts As Boolean): Application.DisplayAlerts = Display_Alerts: End Sub

Function GetNewFileName() As String
           GetNewFileName = "":    InitialFileName = "c:\": NewFileExt = ".xlsx"
           GetNewFileName = Application.GetSaveAsFilename(InitialFileName, _
                          "Листы Excel (*" & NewFileExt & "),", , _
                          "Введите имя файоа", "Сохранить лист")
           If VarType(GetNewFileName) = vbBoolean Then GetNewFileName = "": Exit Function
           If GetNewFileName = "False" Or GetNewFileName = "Ложь" Then GetNewFileName = ""
End Function
[/vba]
Суть проблемы - Когда клацаю на кнопку аля "Сохранить ваш заказ...", то Ексель виснет. Открывает мне еще 2 дополнительные вкладки на панели задач и думает думает думает. Как только формулу убираю, макрос сохранения листа тут же начинает работать без зависания Ексель.
Как решить данную проблему?

Я вырезал лист из прайса, где возникает проблема.
Файл можно скачать тут, так как он весит 150кб
Делаю все в 2010 Екселе.

Прошу помочь понять в чем проблема и как ее решить.
Спасибо большое!

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 21:29
Travelstar Дата: Вторник, 09.12.2014, 21:48 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Мммммм.... Пароли на код ))))
Попробуй пройти в режиме отладки F8
 
Ответить
СообщениеМммммм.... Пароли на код ))))
Попробуй пройти в режиме отладки F8

Автор - Travelstar
Дата добавления - 09.12.2014 в 21:48
Travelstar Дата: Вторник, 09.12.2014, 21:52 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Амм... уточняющий вопрос:
[vba]
Код

If Len(NewFileName) > 0 Then
       Sh.Copy
       ActiveWorkbook.ActiveSheet.Cells.Copy
       ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
       ActiveWorkbook.SaveAs NewFileName
       ActiveWorkbook.Close False
End If
[/vba]

Sh.Copy - ясно...
ActiveWorkbook.ActiveSheet.Cells.Copy - НЕ ясно... что ты тут копируешь?


Сообщение отредактировал Travelstar - Вторник, 09.12.2014, 21:53
 
Ответить
СообщениеАмм... уточняющий вопрос:
[vba]
Код

If Len(NewFileName) > 0 Then
       Sh.Copy
       ActiveWorkbook.ActiveSheet.Cells.Copy
       ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
       ActiveWorkbook.SaveAs NewFileName
       ActiveWorkbook.Close False
End If
[/vba]

Sh.Copy - ясно...
ActiveWorkbook.ActiveSheet.Cells.Copy - НЕ ясно... что ты тут копируешь?

Автор - Travelstar
Дата добавления - 09.12.2014 в 21:52
bear_ukraine Дата: Вторник, 09.12.2014, 21:53 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Мммммм.... Пароли на код ))))
Попробуй пройти в режиме отладки F8

Пароль снял. Забыл про него. Можно скачать заного.

Sh.Copy - ясно...
ActiveWorkbook.ActiveSheet.Cells.Copy - НЕ ясно... что ты тут копируешь?

Этот макрос я взял готовый на просторах интернета)


Сообщение отредактировал bear_ukraine - Вторник, 09.12.2014, 21:54
 
Ответить
Сообщение
Мммммм.... Пароли на код ))))
Попробуй пройти в режиме отладки F8

Пароль снял. Забыл про него. Можно скачать заного.

Sh.Copy - ясно...
ActiveWorkbook.ActiveSheet.Cells.Copy - НЕ ясно... что ты тут копируешь?

Этот макрос я взял готовый на просторах интернета)

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 21:53
Travelstar Дата: Вторник, 09.12.2014, 21:57 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
.cells.copy - копирует полностью все ячейки на листе
 
Ответить
Сообщение.cells.copy - копирует полностью все ячейки на листе

Автор - Travelstar
Дата добавления - 09.12.2014 в 21:57
bear_ukraine Дата: Вторник, 09.12.2014, 22:00 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Так же пробовал этот макрос, найденные на просторах инета
[vba]
Код
Sub СохранитьЛистВФайл()
     On Error Resume Next
     ' название подпапки, в которую по-умолчанию будет предложено сохранить файл
    Const REPORTS_FOLDER = "Отчёты\"
     ' создаём папку для файла, если её ещё нет
    MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
     ' выбираем стартовую папку
    ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER

     ' вывод диалогового окна для запроса имени сохраняемого файла
    Filename = Application.GetSaveAsFilename("отчёт.xls", "Отчёты Excel (*.xls),", , _
                    "Введите имя файла для сохраняемого отчёта", "Сохранить")
     ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл
    If VarType(Filename) = vbBoolean Then Exit Sub

     ' копируем активный лист (при этом создаётся новая книга)
    Err.Clear: ActiveSheet.Copy: DoEvents
     If Err Then Exit Sub    ' произошла какая-то ошибка при попытке копирования листа

     ' убеждаемся, что активной книгой является копия листа
    If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
         ' сохраняем файл под заданным именем в формате Excel 2003
        ActiveWorkbook.SaveAs Filename, xlWorkbookNormal
          
         ' закрываем сохранённый файл
        ' (удалите следующую строку, если закрывать созданный файл не требуется)
        ActiveWorkbook.Close False
     End If
End Sub
[/vba]
Картина все та же - виснет Ексель.
 
Ответить
СообщениеТак же пробовал этот макрос, найденные на просторах инета
[vba]
Код
Sub СохранитьЛистВФайл()
     On Error Resume Next
     ' название подпапки, в которую по-умолчанию будет предложено сохранить файл
    Const REPORTS_FOLDER = "Отчёты\"
     ' создаём папку для файла, если её ещё нет
    MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
     ' выбираем стартовую папку
    ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER

     ' вывод диалогового окна для запроса имени сохраняемого файла
    Filename = Application.GetSaveAsFilename("отчёт.xls", "Отчёты Excel (*.xls),", , _
                    "Введите имя файла для сохраняемого отчёта", "Сохранить")
     ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл
    If VarType(Filename) = vbBoolean Then Exit Sub

     ' копируем активный лист (при этом создаётся новая книга)
    Err.Clear: ActiveSheet.Copy: DoEvents
     If Err Then Exit Sub    ' произошла какая-то ошибка при попытке копирования листа

     ' убеждаемся, что активной книгой является копия листа
    If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
         ' сохраняем файл под заданным именем в формате Excel 2003
        ActiveWorkbook.SaveAs Filename, xlWorkbookNormal
          
         ' закрываем сохранённый файл
        ' (удалите следующую строку, если закрывать созданный файл не требуется)
        ActiveWorkbook.Close False
     End If
End Sub
[/vba]
Картина все та же - виснет Ексель.

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 22:00
bear_ukraine Дата: Вторник, 09.12.2014, 22:02 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

.cells.copy - копирует полностью все ячейки на листе

В том файле, что для скачивания, там до 300ой строки увешано все формулами. Я не могу сделать прайс на макросах - макросы работают только у 10% клиентов. Я бы и с кнопкой не заморачивался, но начальство хочет, чтоб кнопка была.

Хочу еще раз обратить внимание, что проблема возникает именно в режиме защиты листа (даже если все галочки поставить). Как только защиту снимаешь, все работает.


Сообщение отредактировал bear_ukraine - Вторник, 09.12.2014, 22:06
 
Ответить
Сообщение
.cells.copy - копирует полностью все ячейки на листе

В том файле, что для скачивания, там до 300ой строки увешано все формулами. Я не могу сделать прайс на макросах - макросы работают только у 10% клиентов. Я бы и с кнопкой не заморачивался, но начальство хочет, чтоб кнопка была.

Хочу еще раз обратить внимание, что проблема возникает именно в режиме защиты листа (даже если все галочки поставить). Как только защиту снимаешь, все работает.

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 22:02
SLAVICK Дата: Вторник, 09.12.2014, 22:24 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Хочу еще раз обратить внимание, что проблема возникает именно в режиме защиты листа

Конечно, потому что Вы пытаетесь изменять данные на защищенном листе.
ActiveWorkbook.ActiveSheet.Cells.Copy
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats

Если вы хотите заменить все формулы на значения - то нужно макросом снять защиту с листа - заменить все формулы на значения - потом поставить защиту обратно :D
[vba]
Код
ActiveSheet.Unprotect
         ActiveWorkbook.ActiveSheet.Cells.Copy
         ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
         ActiveSheet.Protect
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 09.12.2014, 22:26
 
Ответить
Сообщение
Хочу еще раз обратить внимание, что проблема возникает именно в режиме защиты листа

Конечно, потому что Вы пытаетесь изменять данные на защищенном листе.
ActiveWorkbook.ActiveSheet.Cells.Copy
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats

Если вы хотите заменить все формулы на значения - то нужно макросом снять защиту с листа - заменить все формулы на значения - потом поставить защиту обратно :D
[vba]
Код
ActiveSheet.Unprotect
         ActiveWorkbook.ActiveSheet.Cells.Copy
         ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
         ActiveSheet.Protect
[/vba]

Автор - SLAVICK
Дата добавления - 09.12.2014 в 22:24
bear_ukraine Дата: Вторник, 09.12.2014, 22:33 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

SLAVICK, спасибо, работает.
Т.е. как я понимаю, логика работы следующая:
1. Берется оригинальный лист и при нажатии на кнопку с макросом на этом оригинальном листе меняются ячейки с формулами на сами значения.
2. Потом копируются значения с измененного оригинального листа в новый файл.
?

Едит
Если вы хотите заменить все формулы на значения - то нужно макросом снять защиту с листа - заменить все формулы на значения - потом поставить защиту обратно

По моему не правильное утверждение - если убрать эту 1 формулу, то все начинает работать на защищенном листе, при том что там еще остается кучу разных формул.
Значит проблема в другом.


Сообщение отредактировал bear_ukraine - Вторник, 09.12.2014, 22:39
 
Ответить
СообщениеSLAVICK, спасибо, работает.
Т.е. как я понимаю, логика работы следующая:
1. Берется оригинальный лист и при нажатии на кнопку с макросом на этом оригинальном листе меняются ячейки с формулами на сами значения.
2. Потом копируются значения с измененного оригинального листа в новый файл.
?

Едит
Если вы хотите заменить все формулы на значения - то нужно макросом снять защиту с листа - заменить все формулы на значения - потом поставить защиту обратно

По моему не правильное утверждение - если убрать эту 1 формулу, то все начинает работать на защищенном листе, при том что там еще остается кучу разных формул.
Значит проблема в другом.

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 22:33
SLAVICK Дата: Вторник, 09.12.2014, 22:40 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
почти :D
Сначала копируется лист в новую книгу (со всеми его формулами и свойствами)
Потом на копии "убиваются" формулы
потом сохраняется копия листа.
Оригинал при этом остается нетронутым :)

Поскольку Вы решили защитить лист - многие действия с ним запрещены - поэтому макрос и зависал :D

ActiveWorkbook.ActiveSheet.Cells.Copy = копия всех ячеек листа
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats = вставка скопированных ячеек как значения и форматы
Т.е. Вы копируете ВСЕ ячейки на листе и заменяете ВСЕ формулы значениями :D


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 09.12.2014, 22:45
 
Ответить
Сообщениепочти :D
Сначала копируется лист в новую книгу (со всеми его формулами и свойствами)
Потом на копии "убиваются" формулы
потом сохраняется копия листа.
Оригинал при этом остается нетронутым :)

Поскольку Вы решили защитить лист - многие действия с ним запрещены - поэтому макрос и зависал :D

ActiveWorkbook.ActiveSheet.Cells.Copy = копия всех ячеек листа
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats = вставка скопированных ячеек как значения и форматы
Т.е. Вы копируете ВСЕ ячейки на листе и заменяете ВСЕ формулы значениями :D

Автор - SLAVICK
Дата добавления - 09.12.2014 в 22:40
bear_ukraine Дата: Вторник, 09.12.2014, 22:42 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Поскольку Вы решили защитить лист - многие действия с ним запрещены - поэтому макрос и зависал

Но если убрать формулу из ячейки М3, а все остальные формулы оставить, то макрос на защищенном листе все равно работает)
Или формула формуле рознь (хоть меня и берут смутные сомнения что это так)? :)


Сообщение отредактировал bear_ukraine - Вторник, 09.12.2014, 22:45
 
Ответить
Сообщение
Поскольку Вы решили защитить лист - многие действия с ним запрещены - поэтому макрос и зависал

Но если убрать формулу из ячейки М3, а все остальные формулы оставить, то макрос на защищенном листе все равно работает)
Или формула формуле рознь (хоть меня и берут смутные сомнения что это так)? :)

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 22:42
SLAVICK Дата: Вторник, 09.12.2014, 22:50 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Если Вы хотите оставить формулы как есть - просто удалите строки
[vba]
Код
        ActiveWorkbook.ActiveSheet.Cells.Copy
          ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
[/vba]
Это касается всех формул. Пока на листе есть защищенные ячейки - макрос будет выдавать ошибку.
Чтобы не выдавал два пути - их я уже описал:
1. снять защиту - удалить формулы - поставить защиту
2. не трогать ничего на листе(т.е. не заменять формулы) ... т.е. удалить 2е строки :D

Формулы формулам не рознь - а вот есть "защищаемые ячейки" и нет. - см. свойства ячейки :)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 09.12.2014, 22:51
 
Ответить
СообщениеЕсли Вы хотите оставить формулы как есть - просто удалите строки
[vba]
Код
        ActiveWorkbook.ActiveSheet.Cells.Copy
          ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
[/vba]
Это касается всех формул. Пока на листе есть защищенные ячейки - макрос будет выдавать ошибку.
Чтобы не выдавал два пути - их я уже описал:
1. снять защиту - удалить формулы - поставить защиту
2. не трогать ничего на листе(т.е. не заменять формулы) ... т.е. удалить 2е строки :D

Формулы формулам не рознь - а вот есть "защищаемые ячейки" и нет. - см. свойства ячейки :)

Автор - SLAVICK
Дата добавления - 09.12.2014 в 22:50
bear_ukraine Дата: Вторник, 09.12.2014, 22:52 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Только что еще раз протестил.
Видимо действительно я ошибся в своем утверждении, что если убрать 1 формулу, то макрос работает со всеми остальными формулами (видимо когда ранее тестил, забывал ставить защиту перед запуском макроса).
 
Ответить
СообщениеТолько что еще раз протестил.
Видимо действительно я ошибся в своем утверждении, что если убрать 1 формулу, то макрос работает со всеми остальными формулами (видимо когда ранее тестил, забывал ставить защиту перед запуском макроса).

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 22:52
RAN Дата: Вторник, 09.12.2014, 22:56 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Глюк тут
[vba]
Код
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
[/vba]
так работает
[vba]
Код
Sh.Copy
         ActiveWorkbook.UsedRange.Value = ActiveWorkbook.UsedRange.Value
         ActiveWorkbook.SaveAs NewFileName
         ActiveWorkbook.Close False
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеГлюк тут
[vba]
Код
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats
[/vba]
так работает
[vba]
Код
Sh.Copy
         ActiveWorkbook.UsedRange.Value = ActiveWorkbook.UsedRange.Value
         ActiveWorkbook.SaveAs NewFileName
         ActiveWorkbook.Close False
[/vba]

Автор - RAN
Дата добавления - 09.12.2014 в 22:56
bear_ukraine Дата: Вторник, 09.12.2014, 23:00 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Глюк тут
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats

так работает
Sh.Copy
        ActiveWorkbook.UsedRange.Value = ActiveWorkbook.UsedRange.Value
        ActiveWorkbook.SaveAs NewFileName
        ActiveWorkbook.Close False


В этом случае макрос работает с защитой, но происходит копирование формул, а не значений.
 
Ответить
Сообщение
Глюк тут
ActiveWorkbook.ActiveSheet.Cells.PasteSpecial xlPasteValuesAndNumberFormats

так работает
Sh.Copy
        ActiveWorkbook.UsedRange.Value = ActiveWorkbook.UsedRange.Value
        ActiveWorkbook.SaveAs NewFileName
        ActiveWorkbook.Close False


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

Автор - bear_ukraine
Дата добавления - 09.12.2014 в 23:00
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!