これはすべて、SAP システムへのアクセスの種類によって異なります。データをエクスポートする ABAP プログラムや、マクロが呼び出してデータを直接取得したり、SAP にファイルを作成させたりできる RFC がおそらく最適です。
ただし、原則として、この種の回答を探している人は、IT 部門が SAP システムのカスタマイズに何ヶ月も費やす必要のない即時のソリューションを探しています。
その場合、おそらく SAP GUI スクリプトを使用する必要があります。SAP GUI スクリプトを使用すると、Excel を自動化するのとほぼ同じ方法で Windows SAP GUI を自動化できます。実際、Excel マクロから SAP GUI を直接呼び出すことができます。詳しくはこちらをご覧ください。SAP GUI には、Excel と同様のマクロ記録ツールがあります。Excel VBA とほぼ同じ VBScript でマクロを記録し、通常は直接 Excel マクロにコピーして貼り付けることができます。
サンプルコード
これは、私がアクセスできる SAP システムに基づく簡単な例です。
Public Sub SimpleSAPExport()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start the transaction to view a table
session.StartTransaction "SE16"
'Select table T001
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
session.findById("wnd[0]/tbar[1]/btn[7]").Press
'Set our selection criteria
session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
session.findById("wnd[0]/tbar[1]/btn[8]").press
'Click the export to file button
session.findById("wnd[0]/tbar[1]/btn[45]").press
'Choose the export format
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Choose the export filename
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"
'Export the file
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub
スクリプトの記録
wnd[1]/tbar[0]/btn[0]
スクリプトの記録を使用して、要素の名前を見つけることができます。[ローカル レイアウトのカスタマイズ] ボタンをクリックします。おそらく次のように
なります。
次に、[スクリプトの記録と再生] メニュー項目を見つけます。
その中でMore
ボタンを使用すると、VB スクリプトが記録されているファイルを表示/変更できます。出力形式は少し乱雑で、テキストの選択、テキスト フィールド内のクリックなどを記録します。
編集:アーリーバインディングとレイトバインディング
提供されたスクリプトは、VBA マクロに直接コピーすると機能するはずです。これは遅延バインディングを使用し、行Set SapGuiAuto = GetObject("SAPGUI")
は SapGuiAuto オブジェクトを定義します。
ただし、使用しているオブジェクトのプロパティとメソッドが VBA エディターに表示されるように事前バインディングを使用する場合はsapfewse.ocx
、SAP GUI インストール フォルダーに への参照を追加する必要があります。