может ли макрос при выполнении выдавать ошибку из-за того, что он был написан на 2013ом офисе, а запускается в 2010ом?
Да, такое возможно. Например, если Вы работаете с макро-рекодером и проводите действия с рядами на графиках - в 2013-й версии запись пройдёт через объект FullSeriesCollection, а в более ранних - через SeriesCollection. Конкретных случаев может быть масса. Если Вы хотели бы, чтобы рассмотрели Ваш - нужно:
1). Указать текст ошибки. 2). Указать строку, которая данной ошибкой подсвечивается при выполнении кода (после нажатия "debug"). 3). Приложить к сообщению демонстрационную версию файла с кодом макроса. 4). Указать, чем код в общих чертах занимается.
может ли макрос при выполнении выдавать ошибку из-за того, что он был написан на 2013ом офисе, а запускается в 2010ом?
Да, такое возможно. Например, если Вы работаете с макро-рекодером и проводите действия с рядами на графиках - в 2013-й версии запись пройдёт через объект FullSeriesCollection, а в более ранних - через SeriesCollection. Конкретных случаев может быть масса. Если Вы хотели бы, чтобы рассмотрели Ваш - нужно:
1). Указать текст ошибки. 2). Указать строку, которая данной ошибкой подсвечивается при выполнении кода (после нажатия "debug"). 3). Приложить к сообщению демонстрационную версию файла с кодом макроса. 4). Указать, чем код в общих чертах занимается.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Я ведь правильно понимаю, что тут логика следующая? => То, что сделано на 2013 может не работать на 2010, а то, что сделано на 2010 точно будет работать на 2013?
Я ведь правильно понимаю, что тут логика следующая? => То, что сделано на 2013 может не работать на 2010, а то, что сделано на 2010 точно будет работать на 2013?iilfat
Для разных версия экселя подключаются разные библиотеки: для 2010-го 14-й версии, для 2013 - 15-й. Вот так должно работать и там и там: [vba]
Код
Dim xl As Object Dim Excel_version As String Set xl = CreateObject("Excel.Application") Excel_version = xl.Application.Version If Excel_version = "15.0" Then ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion15 ElseIf Excel_version = "14.0" Then ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion14 End If Set xl = Nothing
[/vba]
Для разных версия экселя подключаются разные библиотеки: для 2010-го 14-й версии, для 2013 - 15-й. Вот так должно работать и там и там: [vba]
Код
Dim xl As Object Dim Excel_version As String Set xl = CreateObject("Excel.Application") Excel_version = xl.Application.Version If Excel_version = "15.0" Then ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion15 ElseIf Excel_version = "14.0" Then ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion14 End If Set xl = Nothing
Dim xlPivotTableVersion As Long Select Case Application.Version Case "15.0": xlPivotTableVersion = 5 Case "14.0": xlPivotTableVersion = 4 End Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion
[/vba]
Марин, а почему не так?[vba]
Код
Dim xlPivotTableVersion As Long Select Case Application.Version Case "15.0": xlPivotTableVersion = 5 Case "14.0": xlPivotTableVersion = 4 End Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "SAP2!C1:C21", Version:=xlPivotTableVersion).CreatePivotTable _ TableDestination:="Sample!R1C1", TableName:="СводнаяТаблица1", _ DefaultVersion:=xlPivotTableVersion
То, что сделано на 2013 может не работать на 2010, а то, что сделано на 2010 точно будет работать на 2013?
Да, всё верно. Это политика совместимости от Microsoft, когда старые компоненты программы ещё не умеют работать с новыми, но новые компоненты уже умеют работать со старыми. Частично этот вопрос затрагивается в теоретической статье про "Раннее и позднее связывание".
То, что сделано на 2013 может не работать на 2010, а то, что сделано на 2010 точно будет работать на 2013?
Да, всё верно. Это политика совместимости от Microsoft, когда старые компоненты программы ещё не умеют работать с новыми, но новые компоненты уже умеют работать со старыми. Частично этот вопрос затрагивается в теоретической статье про "Раннее и позднее связывание".Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Среда, 29.07.2015, 10:09