iLogic では、Microsoft® Excel スプレッド シート ドキュメントへの読み取りおよび書き込みが可能な関数が提供されています。Excel データのリンク関数にアクセスするには、iLogic の[ルールを編集]ダイアログの[スニペット]領域の[システム]タブで、[Excel データのリンク]ノードを展開します。
Excel データのリンク関数には次の 2 種類があります。
他のファイル形式で読み取りと書き込みを行うには、ルールにカスタム VB.NET コードを追加します。
専用の ThisBOM.Export 関数は、アセンブリの部品表を Microsoft® Excel およびその他の形式にエクスポートするために使用します。
Microsoft® Excel データは、Inventor ドキュメント内に埋め込むか、リンクするか、外部ファイルのまま維持することができます。この関数には、ファイル名を渡すか、リンクまたは埋め込む Excel ファイルの仕様を渡す必要があります。
ファイル名の場合は、相対または絶対パスを指定できます。ただし、絶対パスを指定すると、別のコンピュータの他のユーザにモデルを送信することが難しくなる場合があります。パスを指定しない場合、Excel ドキュメントが現在の Inventor ドキュメントと同じフォルダにあると仮定されます。相対パスは、Inventor ドキュメントを含むフォルダから相対的な位置にあると解釈されます。
iLogic は、プロジェクト作業スペース パスにあるファイルも検索します。プロジェクト作業スペース パスからの相対パスを使用することができます。
サポートされているファイル名拡張子には、.xls、.xlsx、.xlsm、および .xlsb があります。
また、ファイル名ではなく、リンクまたは埋め込みのスプレッドシートを指定することもできます。埋め込みスプレッド シートには、3rd Party:Embedding# の構文を使用します。
リンクされたスプレッド シートには、3rd Party:LinkedName.xls の構文を使用します。名前には Inventor モデル ツリーの[サード パーティ]領域に表示されている名前を指定します。
埋め込みテーブルを使用する場合は、[パラメータ]ダイアログ ボックスの[リンク]を使用して埋め込みます。埋め込みテーブル名は、Inventor によって割り当てられた既定の名前から変更しないでください(埋め込み 1 など)。GoExcel には元の名前を指定する必要があります。
ファイルをリンクするには、[管理]タブ [挿入]パネル [オブジェクトを挿入]の順にクリックするか、[パラメータ]ダイアログ ボックスの[リンク]を使用します。
1 つまたは複数の列値の基準に従って行を検索します。
構文
GoExcel.FindRow("filename", "sheetname", "first column title", "operator", value to look for, "second column title", "operator", value to look for, "third column title"...)
”filename”
データ ファイルを指定します。
”sheetname”
検索するテーブルを含んだ Excel ドキュメント内のシートです。シートには、既存の任意のシートを指定できます。
”first column title”
検索するテーブル内の最初の列のタイトルです。通常、列のタイトルは行 1 に配置され、列 A から開始されます。
”operator”
有効値は次のとおりです。
value to look for
明示的な値、パラメータ、ローカル変数によって指定可能なテキスト値または数値です。
”second column title”
検索するテーブル内の 2 列目のタイトルです。
”operator”
<=、>=、または =
value to look for
”third column title”
複数の条件に基づいて行を検索します。
戻り値
検索条件に一致する行番号(整数)です。一致する行が検出されなかった場合は、値が -1 になります。
予想されるエラー
Excel テーブルの要件
例
これらの例では、パラメータ変数 i の値をテーブル内の行数に設定します。Dia は 0.2 に等しく、Len は 4.1 以上です。最初の例は、外部のスプレッドシートを参照しており、2 番目の例は、埋め込みスプレッドシートを参照しています。
i = GoExcel.FindRow("mytable.xls", "Sheet1", "Dia", "=", 0.2, "len", ">=",4.1)
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "Dia", "=", 0.2, "len",">=", 4.1)
この例では、行 6、7、および 2 が最初の Dia=.2 の条件に一致します。ただし、Dia=.2 と len>=4.1 の両方の条件に一致するのは行 4.1 のみです。
GoExcel.FindRow 関数を使用して検出された行から値を読み取ります。
構文
GoExcel.CurrentRowValue("column name")
”column name”
現在の行から取得するセル値の列のタイトル名です。
戻り値
前に GoExcel.FindRow によって検出された現在の行で、指定された列に対応するセルの値です。
エラー
列が見つからない場合にエラー メッセージが返されます。
例
i = GoExcel.FindRow("iLogic_SCHS.xls", "Sheet1", "thread_diameter", "=", Screw_Size, "screw-length", ">=", screw_length_required) thread_diameter = GoExcel.CurrentRowValue("thread_diameter") screw_length = GoExcel.CurrentRowValue("screw_length") head_diameter = GoExcel.CurrentRowValue("head_diameter") head_thickness = GoExcel.CurrentRowValue("head_thickness") socket_size = GoExcel.CurrentRowValue("socket_size") thread_pitch = GoExcel.CurrentRowValue("thread_pitch")
スプレッドシート セルで値の読み取り、書き込みを行います。
構文
GoExcel.CellValue("filename", "sheetname", "cellnumber")
”filename”
「Excel ファイルの指定」を参照してください。
”sheetname”
対象のセルを含む Excel ドキュメント内のシート名です。シートには、既存の任意のシートを指定できます。
”cell number”
読み取りまたは書き込み対象のセル アドレスです(例、"A7")。また、ワークシートの有効範囲内で、特定の範囲を指定することもできます。
戻り値
エラー
Excel テーブル形式の要件
セル値には数値またはテキストを使用する必要があります。
例
埋め込みスプレッドシートの読み取り:
head_rad = GoExcel.CellValue("3rd Party:Embedding 4", "Sheet1","A1")
埋め込みスプレッドシートへの書き込み:
GoExcel.CellValue("3rd Party:Embedding 4", "Sheet1", "A1")= head_rad
外部スプレッドシートの読み取り:
head_rad = GoExcel.CellValue("Spreadsheet.xlsx", "Sheet1", "A5") message =GoExcel.CellValue("Spreadsheet.xlsx", "Sheet1", "B5")
外部スプレッドシートへの書き込み:
GoExcel.CellValue("Spreadsheet.xls", "Sheet1", "A6") = "Hello World" GoExcel.Save
GoExcel.CellValue または GoExcel.Open 関数を使用した後に、スプレッドシート内の特定のセル アドレスで読み取りまたは書き込みを行います。この関数は、事前に開かれたファイルおよびシートを使用します。
構文
GoExcel.CurrentCellValue("cellnumber")
GoExcel.CellValue("cellnumber") (without specifying a filename and sheet name)
”cellnumber”
現在のスプレッドシートでセル値の読み取りまたは書き込みを行うセル アドレスまたは特定の範囲です。
戻り値
指定されたセル番号のセル値です。
エラー
例
1 つのスプレッドシートから連続する複数のセルを読み取ります。
head_rad = GoExcel.CellValue("Spreadsheet.xlsx","Sheet1","A1") head_thick = GoExcel.CellValue("B1") pin_length = GoExcel.CellValue("C1") shaft_rad = GoExcel.CellValue("D1")
スプレッドシート ドキュメント内の連続する複数のセルに書き込みます。
GoExcel.CellValue("Spreadsheet.xlsx","Sheet1","A1") = head_rad GoExcel.CellValue("B1") = head_thick GoExcel.CellValue("C1") = pin_length GoExcel.CellValue("D1") = shaft_rad GoExcel.Save
CellValue 関数と同じように機能します。セル アドレスの代わりに、Excel ワークブック内の特定の範囲を指定します。名前は、ワークブック内の名前にする必要があり、範囲は 1 つのセルに限定する必要があります。セル アドレスの代わりに名前を使用して、標準の CellValue 構文でワークシートの有効範囲における特定の範囲にアクセスできます。
ルール内で NamedRangeValue を使用する前に、GoExcel.CellValue または GoExcel.Open を使用して·Excel·ファイルを開きます。
構文
GoExcel.NamedRangeValue("PinLength")
指定された Excel スプレッドシートを開きます。オプションで、名前が指定されたワークシートをアクティブにします。次に、GoExcel.FindRow や GoExcel.CellValue などの関数を使用して、ワークシートから情報を抽出したり、ワークシートを修正したりできます。
構文
GoExcel.Open("filename", “sheetname”)
”filename”
「Excel ファイルの指定」を参照してください。
”sheetname”
アクティブにする Excel ドキュメント内のシートの名前です。シートには、既存の任意のシートを指定できます。
戻り値
適用外
エラー
Excel ファイルが見つからない。
例
シート名が指定されていない場合、"Sheet1" が仮定されます。
GoExcel.Open("Spreadsheet.xls")
別のワークシートを指定することもできます。
GoExcel.Open("Spreadsheet.xls", "MyOtherSheet")
現在の Excel ドキュメントを保存します。この関数は、GoExcel.CellValue や GoExcel.CurrentCellValue 関数でセルを修正した場合に使用します。
戻り値
適用外
エラー
適用外
例
GoExcel.CellValue("Spreadsheet.xls", "Sheet1", "A1") = "Hello, World!" GoExcel.CellValue("A2") = 5.42 GoExcel.Save
この関数は、次の 2 つの目的で使用します。
Excel スプレッドシートからの読み取り
縦方向の範囲のセルから読み取りができます。この関数は、最初のセルから値の読み取りを開始し、関数に 2 番目に指定されたセルに到達するまで読み取りを続けます。
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "A10")
2 番目のセルのアドレスを空の文字列("")にした場合には、最初のセルのアドレスから読み取りが開始され、空のセルが検出されるまで下方向に読み取りが継続されます。
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "")
横方向の範囲のセルから読み取りができます。
Multivalue.List("parameter") = GoExcel.CellValues("filename.xls", "Sheet1", "A1", "J1")
スプレッドシートを前にルールで参照している場合には、ファイル名とシート名を省略することもできます。
Multivalue.List("parameter") = GoExcel.CellValues("B2", "G2")
Excel スプレッドシートへの書き込み
値を縦方向の範囲のセルに書き込むことができます。この関数は、最初のセルから値の書き込みを開始し、関数に 2 番目に指定されたセルに到達するまで書き込みを続けます。
GoExcel.CellValues("filename.xls", "Sheet1", "A2", "A10") = Multivalue.List("parameter")
値を縦方向の範囲のセルに書き込むことができます。2 番目のセルのアドレスを空の文字列("")にした場合には、マルチバリュー リストのすべてのメンバに値を格納するために必要な数だけセルが使用されます。
GoExcel.CellValues("filename.xls", "Sheet1", "A2", "") = Multivalue.List("parameter")
値を横方向の範囲のセルに書き込むことができます。
GoExcel.CellValues("filename.xls", "Sheet1", "A1", "J1") = Multivalue.List("parameter")
スプレッドシートを前にルールで参照している場合には、ファイル名とシート名を省略することもできます。
GoExcel.CellValues("B2", "G2") = Multivalue.List("parameter")
現在の Excel スプレッドシートを閉じます。
GoExcel.FindRow の前で、列名を含むスプレッドシート内の行番号を指定するために使用します。既定の行番号は 1 です。列名の行よりも上に行がある場合には、この値を変更します。
例
GoExcel.TitleRow = 2
GoExcel.FindRow の前で、データを含むスプレッドシート内の最初の行番号を指定するために使用します。既定の行番号は 2 です。
構文
GoExcel.FindRowStart = <row>
<row>
データが始まる行です。
例
既定値の 2 はデータが 1 行のタイトルに続き 2 行目から始まることを示しています。
GoExcel.FindRowStart = 2
タイトルが 2 行の場合、ルールの GoExcel.FindRow を含むステートメントの前に次のステートメントを追加します。
GoExcel.FindRowStart = 3
iLogic のルールから[ソース変更]の処理にアクセスできます。
この関数は、現在モデルに関連付けられている Excel スプレッドシートを他のスプレッドシートと置き換えます。新しいスプレッドシートに含まれている値がモデルの寸法に設定されます。
構文
changeOK = GoExcel.ChangeSourceOfLinked(partialOldName, newName)
partialOldName
スプレッドシート名で置き換える部分です。
partialOldName は空の文字列 "" にして、最初にリンクされた Excel ファイルに一致させることができます。多くの場合、パーツやアセンブリに関連付けられている Excel ファイルは 1 つのみです。
newName
新しいスプレッドシートの完全なファイル名を入力します。このファイル名は絶対パスまたは相対パスで指定できます。
例
If size = "small" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe"," smallpipe.xlsx") ElseIf size = "medium" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe", "mediumpipe.xlsx") ElseIf size = "large" Then changeOK = GoExcel.ChangeSourceOfLinked("pipe", "largepipe.xlsx") End If
GoExcel.FindRow 関数と併用し、厳密な値ではなく範囲内の値を検索します。既定の許容差は 0.0000001 で、ドキュメントの単位には影響されません。
構文
GoExcel.Tolerance = <tolerance>
大きな許容差を設定すると、許容可能な値の範囲が広くなります。
例
このステートメントは、次の方法で検索に使用します。
GoExcel.Tolerance = 0.001 i = GoExcel.FindRow("Table1.xlsx", "Sheet1", "length", "=", 2.3)
このステートメントは、許容差のない次の検索と同じになります。
i = GoExcel.FindRow("Table1.xlsx", "Sheet1", "length", ">=", 2.299, "length","<=", 2.301)
Excel のメッセージ ダイアログ ボックスを開かないようにします。
構文
GoExcel.DisplayAlerts = True
GoExcel.DisplayAlerts = False
True
Microsoft® Excel のメッセージを表示します(既定)。
False
Excel のメッセージを表示しません。
Excel のアプリケーション オブジェクトにアクセスします。この関数は、Excel COM インタフェースの使用経験がある場合にのみ使用してください。ルールでこの関数を使用する前に他の GoExcel を呼び出して、アプリケーションを初期化します。
構文
excelApp = GoExcel.Application