※ この情報はOffice 2013 カスタマー プレビュー版を元にしています。製品版では変更になる可能性がありますのでご注意ください。
※ 下記コードを元にしたアプリが「カレンダーから日付入力」になります。
前回の記事でExcel MVPの角田さん作の「日本の祝日判定ロジック」をjQuery UI Datepickerに組み込む方法を紹介しましたが、あれは実は前フリで、今回の記事の方が本題「カレンダーから日付を入力するコンテンツアプリの紹介」になります。
・マニフェストファイル(xml)
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ContentApp">
<Id>a335220b-b163-440f-9967-a0c7f085752d</Id>
<Version>1.0</Version>
<ProviderName>きぬあさ</ProviderName>
<DefaultLocale>jp-JP</DefaultLocale>
<DisplayName DefaultValue="カレンダー入力" />
<Description DefaultValue="カレンダーから簡単に日付を入力します。"/>
<IconUrl DefaultValue="http://officeimg.vo.msecnd.net/_layouts/images/general/office_logo.jpg" />
<Capabilities>
<Capability Name="Workbook" />
</Capabilities>
<DefaultSettings>
<SourceLocation DefaultValue="\\XXXX\Apps\Test.html" />
<RequestedWidth>323</RequestedWidth>
<RequestedHeight>256</RequestedHeight>
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
・htmlファイル(Test.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/dot-luv/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>
<script src="https://az88874.vo.msecnd.net/api/1.0/office.js"></script>
<script src="HolidayChk.js"></script>
<script>
Office.initialize = function(reason){}
$(function(){
$("#datepicker").datepicker({
beforeShowDay: function(date) {
var result;
var dd = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate();
var hName = ktHolidayName(dd);
if(hName != "") {
result = [true, "date-holiday", hName];
} else {
switch (date.getDay()) {
case 0: //日曜日
result = [true, "date-holiday"];
break;
case 6: //土曜日
result = [true, "date-saturday"];
break;
default:
result = [true];
break;
}
}
return result;
},
onSelect: function(dateText, inst) {
Office.context.document.setSelectedDataAsync(dateText);
}
});
});
</script>
<style>
.date-holiday .ui-state-default {
background-image:none;
background-color:#FF9999;
}
.date-saturday .ui-state-default {
background-image:none;
background-color:#66CCFF;
}
body {
margin:0;
padding:0;
font-family:Arial,sans-serif;
font-size:0.8em;
}
</style>
</head>
<body>
<div id="datepicker"></div>
</body>
</html>
上記コードを設定したアプリを挿入すると、コンテンツアプリとしてカレンダーが表示され、日付をクリックすることで選択セルに日付が挿入されます。
上記コードを見てもらえれば分かりますが、コード自体は前回の記事とほぼ同じで、セルへの入力部分であるsetSelectedDataAsyncメソッドの部分が若干異なる程度です。
下記Officeストアで同様のアプリがすでに公開されていますが、日本で使用するには上記コードの方が便利だと思います。
・Mini Calendar and Date Picker – STORE – Office.com
http://office.microsoft.com/en-us/store/mini-calendar-and-date-picker-WA102957665.aspx




















従前から、このようなアプリを渇望していました。
早速、Excel のシートに挿入して試してみました。
SelectionChange イベントによって、日付を入力するセルが選択された時だけ、このアプリの可視プロパティをTrue にして活用させていただきます。
> ムックじいじさん
当ブログ管理者のきぬあさです。
アプリをご利用いただきありがとうございます。
> SelectionChange イベントによって、日付を入力するセルが選択された時だけ、このアプリの可視プロパティをTrue にして活用させていただきます。
このような使い方は思いつきませんでした。
私も試してみたいと思います。
ありがとうございます!