64bit版ExcelでVBA⇔SAP連携を行う方法(特殊な環境で業務している人向け)
まず初めに
この記事に記載している方法は一部を除き非推奨な方法となります。
そのため、何らかの問題が発生してもすべて自己責任でお願いします。
正攻法でのSAP連携方法
いずれもSAP公式が提供しているミドルウェアとなります。
使用方法について、Qiitaでもいくつか記事がありますので、詳しく知りたい方はそちらを参照してみてください。(丸投げ)
どちらの手段にしても、JCO(NCO)を使用して作成されたアプリをVBAから呼び出す形で連携を行うことになります。
もちろんVBA以外での連携方法(PowerShellなど)もありますが、ここでは割愛します。
この記事の想定読者
さて、JCOやNCOは大変便利ですが、ミドルウェア(ライブラリ)のダウンロードにはS-Userが必要です。
…そう、S-Userが必要なんです。
この記事は、何らかの理由 (主に職場の環境面) でS-Userの利用ができない、でも64bit版のExcel(VBA)でSAP連携を行いたい人を対象としています。
そんな人どれだけいるんだ…?
解決方法
私の知る限りでは、以下3つの方法があります。
(他にもあるかもしれません)
方法① 32bit版Excelを使用する
一番お手軽な解決方法です。
しかし、64bit版を使用している状態から都度32bit版に切り替えるというのは現実的ではありません。
そのため、SAP連携用に32bit版Excelをインストールしている端末を用意するのが良いでしょう。
気軽に専用端末用意できるのであればS-Userくーださい
方法② レジストリを編集する ※非推奨
SAP Communityの記事を参照ください。
レジストリを編集することで、64bit版Excel(VBA)からでもSAP連携可能になるそうです。
が、当然敷居が高くなりますので、最終手段として考えておくのが良いでしょう。
私としても、これについては実践できていませんので、本当にSAP連携可能になるかどうかも保証できません。
そもそもレジストリ編集を許可する前にS-UserとVisual Studioくーださい
方法③ 64bit版Excel(VBA)から32bit版VBSを実行する
なんてことはありません。
64bit版で動かないなら、無理やり32bit版で動かせば良いのです。
この方法③について実装例を記載します。
実装例:VBAのコード
VBA側の実装は以下になります。
Dim WshShell as WshShell
Dim VBSReturnCode as Integer
Set WshShell = new WshShell
VBSReturnCode = WshShell.Run("cmd.exe /c C:\Windows\SysWOW64\cscript.exe [vbsの配置ディレクトリ]\SAPQueryRFCModule.vbs")
VBSをSysWOW64のcscriptで実行する。ただそれだけのコードとなります。
SAPログインユーザーや実行クライアントを固定値以外にする(入力させる)場合は、VBSの引数にそれを追加し、上記コードの実行引数に追加してください。
実装例:VBSのコード
VBS側の実装は以下になります。(ログインクライアントなどはすべて固定としています)
Option Explicit
Dim FunctionControl
Dim SapConnection
Set FunctionControl = CreateObject("SAP.Functions")
Set SapConnection = FunctionControl.Connection
SapConnection.Client = "xxx"
SapConnection.HostName = "hostname"
SapConnection.SystemNumber = "sysnum"
SapConnection.Language = "ja"
SapConnection.User = "user"
SapConnection.Password = "password"
If SapConnection.Logon(0, True) = False Then
Wscript.Quit(-1)
End If
do something...
FunctionControl.Connection.Logoff
Wscript.Quit(0)
処理の本体となる部分は省略しています。
よくあるVBA⇔SAP連携のコードとほぼ同じですので、VBAで実装してあったものがほぼそのまま移植できます。
おわりに
方法③について、考え方はJCO(NCO)による連携と同じですね。
(SAP連携可能な外部実行ファイル(スクリプト)を呼び出す)
解決方法を難易度順にすると ①>③>② になります。
諸々を考慮すると ③>①>② になりそう
以上です。
ここまでお読みいただき、ありがとうございました。
Author And Source
この問題について(64bit版ExcelでVBA⇔SAP連携を行う方法(特殊な環境で業務している人向け)), 我々は、より多くの情報をここで見つけました https://qiita.com/lenore/items/cf405497c8bd5065575b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .