WordPressで構築したライセンス認証サービスを利用するExcel VBAのサンプルの作成
■はじめに
ライセンス認証サービス・サーバーができたわけですよ。WordPressからは簡単にアクティベーション関係はいけました。データのやりとりはJSON、cURLで送信などを行っていることから考えて、普通に別のプラットフォームからもいけるわけです。
今回は、
「みんな大スキ(謎)Excel VBA!」
です(;^ω^)。
■Excel VBAでの実装を考える
VBAの基本的な部分で何処までできるのかが重要なものとなります。まず、cURL、そしてJSONです。これらがクリアできればほぼできたと言っても過言では無いでしょう。
■標準機能と外部のリソース・・・
実は、JSONをネイティブで扱うことが厳しいという現実がわかりました。
しかーし、世の中には凄い人が沢山います。ライブラリがありました(;^ω^)。
https://github.com/VBA-tools/VBA-JSON
つぎに、cURLでデータをポストする方法です。これは調べると結構出てきました。割と楽です。あとは、実装の際に重複部分をうまく共通化するだけですね。
ぶっちゃけ次のようなコードだけです。
Function SLM_ACTIVATE(LICENSE_KEY As String, UNIQUE_NAME As String) As Object
Set SLM_ACTIVATE = SLM_Actions_Common(SLM_METHOD_ACTIVATE, LICENSE_KEY, UNIQUE_NAME)
End Function
Function SLM_DEACTIVATE(LICENSE_KEY As String, UNIQUE_NAME As String) As Object
Set SLM_DEACTIVATE = SLM_Actions_Common(SLM_METHOD_DEACTIVATE, LICENSE_KEY, UNIQUE_NAME)
End Function
Function SLM_CHECK(LICENSE_KEY As String, UNIQUE_NAME As String) As Object
Set SLM_CHECK = SLM_Actions_Common(SLM_METHOD_CHECK, LICENSE_KEY, UNIQUE_NAME)
End Function
Private Function SLM_Actions_Common(Method As String, LICENSE_KEY As String, UNIQUE_NAME As String) As Object
Dim apiUrlParam As String
Dim apiHeaders As Object
Dim apiJson As Object
LICENSE_KEY = Application.WorksheetFunction.EncodeURL(LICENSE_KEY)
UNIQUE_NAME = Application.WorksheetFunction.EncodeURL(UNIQUE_NAME)
apiUrlParam = "?slm_action=" & Method & _
"&secret_key=" & SLM_LICENSE_SECRET_KEY & _
"&license_key=" & LICENSE_KEY & _
"&product_ref=" & SLM_LICENSE_PRODUCT_REFERENCE & _
"®istered_domain=" & UNIQUE_NAME & _
"&license_key_name=" & SLM_LICENSE_SECRET_KEY_NAME
Set apiHeaders = CreateObject("Scripting.Dictionary")
Set SLM_Actions_Common = callRestApi("POST", SLM_LICENSE_SERVER_URI, apiUrlParam, apiHeaders)
End Function
Function callRestApi(ByVal Method As String, ByVal url As String, Optional ByVal urlParam As String = "", Optional ByVal headers As Dictionary = Null) As Object
On Error GoTo ERR_TRAP
Dim objHTTP As Object
Dim i As Long
Set objHTTP = CreateObject("msxml2.xmlhttp")
objHTTP.Open Method, url & urlParam, False
For i = 0 To headers.Count - 1
objHTTP.setRequestHeader headers.Keys(i), headers.Items(i)
Next i
' リクエスト送信
' サーバーや通信がおかしいと個々で落ちる
objHTTP.send
Debug.Print objHTTP.responseText
Set callRestApi = JsonConverter.ParseJson(objHTTP.responseText)
Exit Function
ERR_TRAP:
Dim sendRequest As Object
Set sendRequest = CreateObject("Scripting.Dictionary")
sendRequest.Add "result", "error"
sendRequest.Add "message", "HTTP/HTTPS connection error"
Set callRestApi = sendRequest
End Function
意外とシンプルですね。これと先ほどのJSONライブラリを付く合わせるだけで実装完了です。実際の運用には、エラー・例外処理をちゃんと入れないといけませんが、これだけでインターネット上にあるライセンス認証サービス・サーバーとのやりとりが可能です。
俗にある「2週間毎の認証」とかも普通にできます。
■今回のまとめ
難しくないお(^ω^)。
■サンプル
今回はサンプルがあります!

モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?
Related Posts
https://kshigeyama.dreampresenter.info/2020/05/22/4979/Excel,Excel VBA,WordPress■はじめに ライセンス認証サービス・サーバーができたわけですよ。WordPressからは簡単にアクティベーション関係はいけました。データのやりとりはJSON、cURLで送信などを行っていることから考えて、普通に別のプラットフォームからもいけるわけです。 今回は、 「みんな大スキ(謎)Excel VBA!」 です(;^ω^)。 ■Excel VBAでの実装を考える VBAの基本的な部分で何処までできるのかが重要なものとなります。まず、cURL、そしてJSONです。これらがクリアできればほぼできたと言っても過言では無いでしょう。 ■標準機能と外部のリソース・・・ 実は、JSONをネイティブで扱うことが厳しいという現実がわかりました。 しかーし、世の中には凄い人が沢山います。ライブラリがありました(;^ω^)。 https://github.com/VBA-tools/VBA-JSON つぎに、cURLでデータをポストする方法です。これは調べると結構出てきました。割と楽です。あとは、実装の際に重複部分をうまく共通化するだけですね。 ぶっちゃけ次のようなコードだけです。 Function SLM_ACTIVATE(LICENSE_KEY As String, UNIQUE_NAME As String) As ObjectSet SLM_ACTIVATE = SLM_Actions_Common(SLM_METHOD_ACTIVATE, LICENSE_KEY, UNIQUE_NAME)End FunctionFunction SLM_DEACTIVATE(LICENSE_KEY As String, UNIQUE_NAME As String) As ObjectSet SLM_DEACTIVATE = SLM_Actions_Common(SLM_METHOD_DEACTIVATE, LICENSE_KEY, UNIQUE_NAME)End FunctionFunction SLM_CHECK(LICENSE_KEY As String, UNIQUE_NAME As String) As ObjectSet SLM_CHECK = SLM_Actions_Common(SLM_METHOD_CHECK, LICENSE_KEY, UNIQUE_NAME)End FunctionPrivate Function SLM_Actions_Common(Method As String,...しげっち法師さん kshigeyama@gmail.comAdministratorドリームプレゼンター&サポータ&アドバイザです。こっちは比較的マジメ系w。ありとあらゆるコトをフュージョンした感じで生きていこうかな。 文房具やガジェット、家電屋さん巡り、バスに乗ってふらふらなどもしています。 Bot作者でもあります。システム構築(Web/PHP/Javaとか)・IT/ビジネスコンサル系です。しげっち@ドリームプレゼンターWeb

コメントを残す