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にインストールする必要があります。
結果: