Здравствуйте! Есть кусок кода vba, который прекрасно работал с 2003 по 2010 Excel А вот для Excel2016 (windows 10) на тех же файлах выдает ошибку: Метод pasteSpecial из класса worksheet завершен неверно
[vba]
Код
Sub CopySheetFormules(fromSheet As Worksheet, toSheet As Worksheet) fromSheet.Activate fromSheet.Cells.Copy toSheet.Activate toSheet.Cells(1, 1).select
ActiveSheet.PasteSpecial Format:=7, Link:=False, DisplayAsIcon:=False ' здесь падает toSheet.Cells(1, 1).select End Sub
[/vba]
Что тут может быть неверным?
Приложить пример затруднительно - все файлы большие и разные, все прекрасно работали на предыдущих версиях Excel Тут скорей вопрос про Excel 2016
Здравствуйте! Есть кусок кода vba, который прекрасно работал с 2003 по 2010 Excel А вот для Excel2016 (windows 10) на тех же файлах выдает ошибку: Метод pasteSpecial из класса worksheet завершен неверно
[vba]
Код
Sub CopySheetFormules(fromSheet As Worksheet, toSheet As Worksheet) fromSheet.Activate fromSheet.Cells.Copy toSheet.Activate toSheet.Cells(1, 1).select
ActiveSheet.PasteSpecial Format:=7, Link:=False, DisplayAsIcon:=False ' здесь падает toSheet.Cells(1, 1).select End Sub
[/vba]
Что тут может быть неверным?
Приложить пример затруднительно - все файлы большие и разные, все прекрасно работали на предыдущих версиях Excel Тут скорей вопрос про Excel 2016Shurakm
Сообщение отредактировал Shurakm - Среда, 04.10.2017, 16:21
А потом вот эта странная функция (CopySheetFormules) для каждого листа должна по идее отдельно скопировать формулы (присутствует коммент типа - "а то при копировании есть ограничение 255 символов") Может старое ограничение, может еще что Вот вроде параметр Format:=7 - это xlAllExceptBorders, а совсем не формулы как указано
Сорри за сумбур... Я в vba даже не любитель. Код не мой и очень древний.
Берется шаблон из БД (Excel 2007), копируются листы из него в новую книгу (Excel 2016). [vba]
А потом вот эта странная функция (CopySheetFormules) для каждого листа должна по идее отдельно скопировать формулы (присутствует коммент типа - "а то при копировании есть ограничение 255 символов") Может старое ограничение, может еще что Вот вроде параметр Format:=7 - это xlAllExceptBorders, а совсем не формулы как указаноShurakm
А вот нифига! xlAllExceptBorders это не параметр Format, это параметр paste:
Цитата
Range.PasteSpecial Method Pastes a Range from the Clipboard into the specified range. Syntax expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose) expression A variable that represents a Range object. Parameters Name Required/Optional Data Type Description Paste Optional XlPasteType . The part of the range to be pasted.
Поэтому вместо Вашей помойки: [vba]
Код
Sub CopySheetFormules(fromSheet As Worksheet, toSheet As Worksheet) fromSheet.UsedRange.Copy toSheet.Cells(1, 1).PasteSpecial xlPasteFormulas End Sub
[/vba]
А вот нифига! xlAllExceptBorders это не параметр Format, это параметр paste:
Цитата
Range.PasteSpecial Method Pastes a Range from the Clipboard into the specified range. Syntax expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose) expression A variable that represents a Range object. Parameters Name Required/Optional Data Type Description Paste Optional XlPasteType . The part of the range to be pasted.
Поэтому вместо Вашей помойки: [vba]
Код
Sub CopySheetFormules(fromSheet As Worksheet, toSheet As Worksheet) fromSheet.UsedRange.Copy toSheet.Cells(1, 1).PasteSpecial xlPasteFormulas End Sub
Выкинул в паре шаблонов указанный блок с дополнительным копирование как бы длинных формул - все заработало Но.. этих шаблонов много и возможно в каком-то из них есть эти пресловутые длинные формулы Т.е. теоретически задачу можно свести к переделыванию всех шаблонов (выкинуть этот блок) и тщательной проверке результата Однако это немаленькая задача
Выкинул в паре шаблонов указанный блок с дополнительным копирование как бы длинных формул - все заработало Но.. этих шаблонов много и возможно в каком-то из них есть эти пресловутые длинные формулы Т.е. теоретически задачу можно свести к переделыванию всех шаблонов (выкинуть этот блок) и тщательной проверке результата Однако это немаленькая задача Shurakm
Но вообще-то чепуха. Как правило не делаю примеров за ТС, но.. В F1 длина формулы 1542 знака, что по мне так запредельный изврат. Но все копируется и как формулы и как просто копирование: [vba]
Код
Public Sub www() [a1].CurrentRegion.Copy [Лист2!a1].PasteSpecial xlPasteFormulas End Sub Public Sub www1() [a1].CurrentRegion.Copy [Лист2!a1] End Sub
[/vba]
Но вообще-то чепуха. Как правило не делаю примеров за ТС, но.. В F1 длина формулы 1542 знака, что по мне так запредельный изврат. Но все копируется и как формулы и как просто копирование: [vba]
Код
Public Sub www() [a1].CurrentRegion.Copy [Лист2!a1].PasteSpecial xlPasteFormulas End Sub Public Sub www1() [a1].CurrentRegion.Copy [Лист2!a1] End Sub
А в другом месте ([url=https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.worksheet.pastespecial(v=vs.120).aspx]msdn[/url]) предлагает вводить текстовый параметр Если вы не знаете, какую строку передавать параметру Format, можно просмотреть строки, которые совместимы с данными в буфере обмена, попытавшись выполнить команду вставки в Excel. Скопируйте данные в буфер обмена, воспользуйтесь командой Специальная вставка в Excel, а затем просмотрите форматы, перечисленные в диалоговом окне Специальная вставка.
За неимением времени попробую отрубить этот кусок кода и подождать где вылезет
Спасибо за помощь На самом деле что-то непонятное и главное не могу выявить смысл этого куска кода (отчеты монструозные)
А в другом месте ([url=https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.worksheet.pastespecial(v=vs.120).aspx]msdn[/url]) предлагает вводить текстовый параметр Если вы не знаете, какую строку передавать параметру Format, можно просмотреть строки, которые совместимы с данными в буфере обмена, попытавшись выполнить команду вставки в Excel. Скопируйте данные в буфер обмена, воспользуйтесь командой Специальная вставка в Excel, а затем просмотрите форматы, перечисленные в диалоговом окне Специальная вставка.
За неимением времени попробую отрубить этот кусок кода и подождать где вылезетShurakm
Shurakm, еще раз - Вы слышали звон, не зная где он. Параметр format применяется при копировании например, из ворда, Ишака и т.д. Из внешних приложений. При копировании с листа на лист Экса применяют ВСЕ другие параметры. Я Вам в №4 привел справку - какие. Не надо превращать тему в пустопорожний треп, Вам ведь решение надо?
Shurakm, еще раз - Вы слышали звон, не зная где он. Параметр format применяется при копировании например, из ворда, Ишака и т.д. Из внешних приложений. При копировании с листа на лист Экса применяют ВСЕ другие параметры. Я Вам в №4 привел справку - какие. Не надо превращать тему в пустопорожний треп, Вам ведь решение надо?KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728