Excelのワークシートからデータを読み込む
このチュートリアルでは、Excelのワークシートからデータを読み込み、その結果をSAPの画面に表示する方法を示します。
今回の例では、悪意のあるコードと担当社員を対応付ける作業表が用意されています。ここでは、入力されたコードに基づいて社員を判定します。

入力フィールド、プッシュボタン、およびSAP画面への出力フィールドを新たに追加します。
inputfield (20,1) “Read user to code from excel-file” (20,35) size=“25” name=“code” default=“TSC99”  -uppercase
inputfield (20,70) size=“15” name=“usertocode” -uppercase -nolabel
pushbutton (20,62) “ok” process=“read_excel_va03.txt”
InputScriptの”read_excel_va03.txt”においてVB.NET関数を呼び出し、ファイル名とコードをパラメーターとしてその関数に渡します。
callvb utilities.exceldotnet.TestReadCellsExcel “D:\Excel\duty_rota.xlsx” “&V[code]”
return
ここでは、クラスライブラリ”utilities.dll”にある”exceldotnet”クラスの”TestReadCellsExcel”関数を実装します。MS Excelと情報をやり取りするために、Microsoftが提供するインターフェイスを利用します。そのため、関連するクラスライブラリへの参照をプロジェクトに追加し、クラスにその名前空間をインポートします。

| 1 | Imports Microsoft.Office.Interop | 
| 2 | Imports guinet | 
| 3 | |
| 4 | Public Class exceldotnet | 
| 5 | |
| 6 | Public Function TestReadCellsExcel(ByVal filename As String, ByVal code As String) As String | 
| 7 | |
| 8 | Dim returncode = “1” | 
| 9 | Dim oXL As New Excel.Application | 
| 10 | Dim g As New guixt | 
| 11 | |
| 12 | Try | 
| 13 | |
| 14 | Dim oWB As Excel.Workbook | 
| 15 | Dim oSheet As Excel.Worksheet | 
| 16 | |
| 17 | oXL = CreateObject(“Excel.Application”) | 
| 18 | oXL.Visible = False | 
| 19 | |
| 20 | oWB = oXL.Workbooks.Open(filename) | 
| 21 | oSheet = oWB.ActiveSheet | 
| 22 | |
| 23 | Dim range As Excel.Range = oSheet.UsedRange | 
| 24 | Dim c As Integer = 1 | 
| 25 | |
| 26 | For Each r In range.Rows | 
| 27 | |
| 28 | If oSheet.Cells(c, 1).Value.ToString = code Then | 
| 29 | g.SetVariable(“usertocode”, oSheet.Cells(c, 2).Value.ToString) | 
| 30 | returncode = “0” | 
| 31 | Exit For | 
| 32 | |
| 33 | End If | 
| 34 | c += 1 | 
| 35 | Next | 
| 36 | |
| 37 | Catch | 
| 38 | |
| 39 | oXL.ActiveWorkbook.Close(False) | 
| 40 | oXL.Quit() | 
| 41 | Return “Exception” | 
| 42 | |
| 43 | End Try | 
| 44 | |
| 45 | oXL.ActiveWorkbook.Close(False) | 
| 46 | oXL.Quit() | 
| 47 | |
| 48 | Return returncode | 
| 49 | |
| 50 | |
| 51 | End Function | 
| 52 | |
| 53 | End Class | 
29行目で、担当社員名をGuiXT変数に直接代入しています。これは、このデータがSAPの画面に直ちに表示されることを意味しています。
注: MS ExcelがVB.NETインターフェイスを介して呼び出され、非表示で実行される場合でも、MS ExcelをクライアントPCにインストールする必要があります。
結果:


