Во-первых, посмотрите комментарии ниже, чтобы узнать, почему ваш пример кода не может работать в PPT:
Sub ChangeCharts()
' PPT has no ChartObject type
Dim myChart As ChartObject
' PPT has no ActiveSheet object
For Each myChart In ActiveSheet.ChartObjects
myChart.Chart.ApplyChartTemplate ( _
"Name\Users\Name\Library\Group Containers\UBF8T346G9.Office\User Content\Chart Templates\1.crtx")
Next myChart
End Sub
Предполагая, что вы запускаете это из PPT, вам понадобится что-то вроде: [ 113]
Sub ChangeCharts
Dim oSl as Slide
Dim oSh as Shape
For Each oSl in ActivePresentation.Slides
For Each oSh in oSl.Shapes
Select Case oSh.Type
Case Is = 3 ' Chart created in PPT
' apply the template here
With oSh.Chart
.ApplyChartTemplate "drive:\path\template_name.crtx"
End with ' the chart
' Other case statements as needed to
' cover embedded/linked OLE objects
' that are Excel charts
End Select
Next ' oSh/Shape
Next ' oSl/Slide
End Sub
Используя http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2 :
$(document).ready(function(){
var param = $(document).getUrlParam('selectedTab');
$('#menu').tabs('select', param);
});
От документация :
#select
Подпись:
.tabs( 'select' , [index] )
Выбор вкладка, как будто это было нажато. Вторым аргументом является основанный на нуле индекс вкладки, которая будет выбрана или идентификационный селектор панели, вкладка связана с (href идентификатор фрагмента вкладки, например, хеш, точки к идентификатору панели).
Следующая ссылка плагина jQuery кажется возможным кандидатом на решение, поскольку она предоставляет Вам URL и составные части. Вы затем смогли бы соответствовать значению или индексу вкладки, которую Вы хотите выбрать или идентификатором или классом через селектор jQuery:
http://www.oakcitygraphics.com/jquery/jqURL/jqURLdemo.html?var1=1&var2=2&var3=3
я предполагаю, что достаточно загрузить историю и заставить это работать.
У меня немного другой подход, который не обязательно полагается на встроенную функцию select(), но использует плагин livequery:
http://plugins.jquery.com/project/livequery/
который является более мощной версией функции jQuery live. Она может легко связывать будущие элементы, соответствующие запросу.
Предположим, у вас есть следующая структура вкладок:
<div class="Tabs">
<ul class="nav">
<li><a id="tab1">Link 1</a></li>
<li><a id="tab2">Link 2</a></li>
<li><a id="tab3">Link 3</a></li>
</ul>
..
..
</div>
в идеале, вы хотите получить такую структуру URL:
mydomain/mypage?tab=tab2
это становится довольно сложным, потому что метод select() поддерживает только целочисленные индексы, а что произойдет, если вы поменяете вкладки местами?
Предположим, что вы можете получить параметр url в переменную, как указано выше, чтобы сделать следующее:
Сначала вы находите целевой элемент и добавляете к нему класс:
jQuery('a#' + param).addClass('selectMe');
Затем вы привязываете к элементу функцию livequery:
jQuery('.ui-tabs-nav a.selectMe').livequery(function(){
jQuery(this).removeClass('selectMe').triggerHandler('click');
});
Это будет соответствовать ему только после того, как он будет изменен на вкладке и практически "кликнут" на него.
Затем вы можете вызвать вашу функцию tabs без параметров:
jQuery(".Tabs").tabs();
и как только она будет завершена, вкладка автоматически будет нажата и выбрана!
Еще лучше, вы можете привязать создание вкладок к самому livequery:
jQuery(".Tabs").livequery(function(){
jQuery(this).tabs();
});
так что любые элементы с классом '.Tabs' будут автоматически преобразованы во вкладки при загрузке, сейчас или в будущем!
Jquery-UI дает вам это (почти) бесплатно: используйте внутренние ссылки. И это лучше, чем использовать уродливые параметры get.
Передача http://my.site.org/mypage/#foo-tab в вашем навигаторе автоматически выберет вкладку с контейнером, имеющим id = "foo-tab".
Хитрость заключается в том, чтобы добавить событие для обновления URL-адреса при выборе вкладки, чтобы при перезагрузке вы не потеряли текущую вкладку:
$(document).ready(function () {
$("#tabs").bind('tabsselect', function(event, ui) {
window.location.href=ui.tab;
});
});