プロが教える店舗&オフィスのセキュリティ対策術

ExcelでNTPサーバーから時刻を取得したい。
Excelで勤怠管理をしたいです。関数を使ってPCの時刻を取得することは出来ます。ただ、PCの時刻は変えようと思えば変えることが出来てしまうので、NTPサーバーなどから時刻を取得したいのですが、そのやり方が分からず途方に暮れています。
どなたかご教示願えないでしょうか。

A 回答 (3件)

こんにちは



>NTPサーバーなどから時刻を取得したいのですが、
直接取得しようとするとソケット通信が必要なようです。
以下に、参考例があります。(VBAではありませんけれど)
http://www.balard.sakura.ne.jp/vb/dnet/ntp.php
https://www.petitmonte.com/bbs/answers?question_ …

あるいはこんなのを利用するとか。
https://www.vector.co.jp/soft/winnt/prog/se28170 …

簡易的でよければ以下のようなサービスを利用する方法も考えられます。
(ただし、「公開サービス停止の方向」とのアナウンスがありますけれど)
http://www.nict.go.jp/JST/http.html

補正は行っていませんが、上記を取得するだけならこんな感じ。
(GMTでの取得例)
Sub getTime()
Dim httpReq
Const NICT = "https://ntp-a1.nict.go.jp/cgi-bin/time?9"

Set httpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
httpReq.Open "GET", NICT, False
httpReq.send
MsgBox httpReq.ResponseText
End Sub

社内ネットワークがあるのなら、類似の方法で社内サーバから取得するのがよさそうにも思いますけれど。
    • good
    • 0
この回答へのお礼

ありがとうございます。目指しているものにかなり近づきました。http://www.nict.go.jp/JST/http.htmlの分は現在使っている方法になりますが、サービスが停止されるようで別の方法を考えています。GMTでの取得例に書かれているものが目指すべきものに近いです。マクロ初心者で基本的なこともわからないのですが、このマクロだとメッセージボックスで表示されます。これをマクロ実行する前に選択されたセルに出力させるにはこのマクロどのように書き換えればよいのでしょうか。また、そのあと、2021/02/07 10:56のように表示させたいとしたらどのような作業が必要になりますか。よろしくお願いいたします。

お礼日時:2021/02/07 10:56
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
知識が全くなくこれをExcelにどう取り込むのかが分かりません。このリンク先の作業を従業員一人一人にしてもらうということでしょうか。ExcelのマクロでNTPサーバーから時刻を取得したりは出来ないのでしょうか。

お礼日時:2021/02/06 22:30

Excelを操作できるのならばNTPサーバから取得した時刻も変えられるのではないでしょうか



一般的な解決策としては
OSのセキュリティポリシーにて
EXCELを使用するユーザにシステム時刻の変更を許可しない設定をする
というのが考えられましたが、それではダメですかね?

一応、参考サイトを載せておきますね
https://docs.microsoft.com/ja-jp/windows/securit …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
これは特定のPCで作業を行う場合しか出来ないのではないでしょうか。従業員一人一人がサーバー上にあるExcel勤怠ファイルにアクセスして打刻する仕組みになっています。

お礼日時:2021/02/06 22:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!