テンプレート処理サンプルコード






'
' VB .NET X-TRAiNテンプレート処理サンプルプログラム
'
' (c) ARKTAN.INC.
'
Imports System.Runtime.InteropServices

Module Module1
    '----------------------------------------------------------------------------
    ' X-TRAiN .Net用ラッピング関数定義(pxls_api.dll)
    '----------------------------------------------------------------------------
    ' テンプレート用Excelブックオープン
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function open_template(ByVal argments As System.Text.StringBuilder) As Integer
    End Function
    ' ブック保存
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function save_book() As Integer
    End Function
    ' ブック破棄
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function scrap_book() As Integer
    End Function
    ' 値/属性設定
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function put_values(ByVal argments As System.Text.StringBuilder) As Integer
    End Function
    ' エラーコード取得
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function error_code() As Integer
    End Function
    ' エラーメッセージ取得
    <System.Runtime.InteropServices.DllImport("pxls_api.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
    Public Function error_mesg(ByVal argments As System.Text.StringBuilder) As Integer
    End Function
    '----------------------------------------------------------------------------
    ' X-TRAiN for VB .NET テンプレート処理サンプルメイン
    '----------------------------------------------------------------------------
    Sub Main()
        Dim rtn As Integer
        Dim arguments As New System.Text.StringBuilder()
        Dim keyin As String

        ' テンプレートExcelブックオープン
        arguments.Length = 0
        arguments.Append("VBテンプレート.xlsx")

        rtn = open_template(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If

        ' ブック名設定
        arguments.Length = 0
        arguments.Append("BOOK=VBサンプル.xlsx")

        rtn = put_values(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If

        ' 更新内容キー入力
        Console.Write("更新内容 > ")
        keyin = Console.ReadLine()
    
        ' テンプレート更新
        arguments.Length = 0
        arguments.Append(keyin)

        rtn = put_values(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine("EXIT error_mesg()")
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If

        ' Excelブック保存
        rtn = save_book()
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Environment.Exit(-1)
        End If

        Console.WriteLine("Excelブックを出力しました。")
        Console.WriteLine("終了するには何かキーを押してください。")
        Console.ReadKey()
    End Sub

End Module

	


解説
テンプレートブックのメモリロード
        ' テンプレートExcelブックオープン
        arguments.Length = 0
        arguments.Append("VBテンプレート.xlsx")

        rtn = open_template(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If
	
open_template関数を使い、テンプレートブックをメモリにロードします。
エラー時は戻り値として0以外が返却されます。
エラーの内容は、error_code関数でエラーコードを、error_mesg関数で エラーメッセージを取得して行います。

作成ブック名、更新対象シートの指定

        ' ブック名設定
        arguments.Length = 0
        arguments.Append("BOOK=VBサンプル.xlsx")

        rtn = put_values(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If

	
put_values関数を使い、作成ブック名や更新対象シートのカレント化を行います。

セル値の更新
        ' 更新内容キー入力
        Console.Write("更新内容 > ")
        keyin = Console.ReadLine()
    
        ' テンプレート更新
        arguments.Length = 0
        arguments.Append(keyin)

        rtn = put_values(arguments)
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine("EXIT error_mesg()")
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Console.WriteLine("終了するには何かキーを押してください。")
            Console.ReadKey()
            Environment.Exit(-1)
        End If
	
テンプレート処理では、セルの値のみを更新することができます。
罫線、セルの塗りつぶし、フォントの設定、書式の追加や変更を 行うことはできません。
本サンプルは、標準入力(キーボード入力)より、A1=値 の 形式でセルの値を指定して更新する仕様です。

ブックの保存
        ' Excelブック保存
        rtn = save_book()
        If rtn <> 0 Then
            arguments.Length = 1024
            error_mesg(arguments)
            Console.WriteLine(arguments.ToString)
            scrap_book()
            Environment.Exit(-1)
        End If
	
save_book関数を使い、ブックの保存を行います。