IT仕事 MS Access

Excelで使える祝日判定のWebAPIを見つけた

投稿日:

Excelの関数には、曜日を判定できる関数(WEEKDAY)が用意されている。また、表示だけなら書式設定でもできる。しかし祝日となると、関数も何も、用意されていない。
祝日は年により、突然増えたり、「来年からは第〇週目に変更」などとなったりするので、対応が難しいのであろう。

それでも何か方法がないかと「excel 祝日」などでGoogle検索すると、Google Calendar API を利用する方法がトップに出てくる。
見つけた時はうれしかったが、よくよくページを見てみると、コードが恐ろしく長く、また随所に使いにくい部分が出てくる。

さらに簡単な方法がないか探して、やっと見つけた、サンプルサイトが、以下。

国民の祝日チェック

上記のサイトでは、祝日判定のWebAPIを提供している。
ブラウザのURLに、http://s-proj.com/utils/checkHoliday.php?kind=h&date=20170503 をコピペしてEnterキーを押すと動きが分かるが、末尾の8桁の数字でもって祝日かそうでないかが、シンプルかつエレガントに分かるようになっている。

その仕組みを使わせていただいて、ExcelVBAに取り込んでみたのが、こちら。Accessでも使える。
実際に使う際は、Debug.Printしている部分を、セルに入れたり、テキストボックスに代入したり、することになろう。

[code]
Sub httpRequest()
‘ 祝日判定
‘ 国民の祝日チェック <http://s-proj.com/utils/holiday.html>

Dim HttpReq As MSXML2.XMLHTTP60
Dim DomDoc As MSXML2.DOMDocument60
Dim targetURL As String

targetURI = "http://s-proj.com/utils/checkHoliday.php?kind=h&date=20170503" ‘20170503部分を任意の数値に

‘HTTP GET
Set HttpReq = CreateObject("MSXML2.XMLHTTP")
HttpReq.Open "GET", targetURI, False
HttpReq.send (Null)

Set DomDoc = CreateObject("MSXML2.DOMDocument.6.0")
DomDoc.LoadXML (HttpReq.responseText)
Debug.Print HttpReq.responseText

Set HttpReq = Nothing
Set DomDoc = Nothing

End Sub
[/code]

いいものが見つかって、うれしい。
作者さん、ありがとうございます。

-IT仕事, MS Access

執筆者:

関連記事

no image

VBAで英字混じりの引数から数字のみを取り出す関数

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。 VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。 カスタム関数を作るにも、これはという情報がググ …

no image

GWも出勤をしている企業戦士とはオレのことだ

出勤はしていても、「仕事はしない、勉強をする」と決めた今日は、 http://www.moug.net/tech/exvba/ のサイトで学習三昧。今度この手の仕事があるから。 関数関連のテクニックま …

no image

自分のサイトに埋め込みしたGoogleマイマップの中心位置カスタマイズは不可

Googleマイマップが新しくなってしばらく経つ。 お客さんのサイトに埋め込んで便利に使わせていただいていたのだが、本日、困ったことを発見した。 地図の中心位置をカスタマイズできない、のだ。 以前のマ …

no image

Accessの複雑な処理のレポート帳票で1ページのみ出力されるはずが2ページ目になぜかページヘッダーが出るトラブルに見舞われ

レポートのデザインビューでいうと上から、レポートヘッダー、ページヘッダー、グループヘッダー、詳細、グループフッター、ページフッター、レポートフッター・・・というような、結構細かいレポートを作っている。 …

Shopify(Matrixify)でスケジュール化したJobのキャンセル

どうしても方法を見つけられなかったが、ふと画面に目を落とすと、あった、方法が。 焦ると視野が狭くなって、なかなか気が付かないんだよなあ、こういうの。 You have 4 scheduled jobs …