情報を Excel スプレッドシートに書き出す

以上で、部品番号を計算するモデルを構築するために必要なパラメータ値をすべて設定しました。最後に記述する規則では、このファイルに関連する部品番号やその他のパラメータの値を Excel スプレッドシートに渡します。この部品番号の一部は iPart にあり、この規則がねじの部品番号を生成しています。

update_excel_spreadsheet_rule は、[ルールを編集]ダイアログ ボックスの[スニペット]領域にある[Excel データのリンク]カテゴリからアクセスできる一連の関数を利用します。

  1. update_excel_spreadsheet_rule という名前の新しい規則を追加します。

    この規則は、モデルの状態に応じて必要なセルに情報を入力します。スプレッドシートでは、データが渡されるすべてのセルに、書き込まれる情報に対応するように名前が付けられます。

  2. 規則の最初の部分を作成します。この部分では、スプレッドシートを開いて最初の 3 つのセルの値を書き込みます。

    コード ブロックをコピーする

    GoExcel.CellValue("part_number.xls", "Sheet1", "Block_Type") = component_type
    GoExcel.CurrentCellValue("Block_Style") = block
    GoExcel.CurrentCellValue("Block_Part_Number") = iProperties.Value("manifold_block:1", "Project", "Part Number")

    このセクションでは、このチュートリアル プロジェクトとともに含まれている part_number.xls スプレッドシート ファイルを参照します。次に、セル Block_TypeBlock_Style、および Block_Part_Number の値を設定します。最初の 2 つの値はアセンブリ パラメータから設定され、最後の値はブロックの iProperty である[部品番号]から設定されます。

  3. 規則の次の部分を作成します。この部分では、3 つのポート サイズの値をスプレッドシートに書き込みます。

    コード ブロックをコピーする

    GoExcel.CurrentCellValue("port_a_size") = port_a_size
    If block = "tee" Then
    GoExcel.CurrentCellValue("port_b_size") = port_b_size
    Else
    GoExcel.CurrentCellValue("port_b_size") = "N/A"
    End If
    GoExcel.CurrentCellValue("port_c_size") = port_c_size

    エルボ スタイルのマニホルドの場合に、N/A のプレースホルダの値をどのように使用するのか注目してください。

  4. 規則に別のセクションを追加します。このセクションでは、マニホルド ブロック コンポーネントに含まれているパラメータからセルの値を割り当てます。

    コード ブロックをコピーする

    GoExcel.CurrentCellValue("block_depth") = Parameter("manifold_block:1", "block_depth")
    GoExcel.CurrentCellValue("block_width") = Parameter("manifold_block:1", "block_width")
    GoExcel.CurrentCellValue("block_height") = Parameter("manifold_block:1", "block_height")

    このセクション内の manifold_block:1 コンポーネントへの参照に注目してください。

  5. 規則にもう 1 つセクションを追加します。このセクションでは、screw_part_number_rule によって計算される結合コンポーネントおよびねじパーツの部品番号から、セルの値を割り当てます。

    コード ブロックをコピーする

    GoExcel.CurrentCellValue("port_a_union_cap") = port_a_union_part_number
    GoExcel.CurrentCellValue("port_a_screw_kit") = port_a_screw_part_number
    If block = "tee" Then
    GoExcel.CurrentCellValue("port_b_union_cap") = port_b_union_part_number
    GoExcel.CurrentCellValue("port_b_screw_kit") = port_b_screw_part_number
    Else
    GoExcel.CurrentCellValue("port_b_union_cap") = "N/A"
    GoExcel.CurrentCellValue("port_b_screw_kit") = "N/A"
    End If
    GoExcel.CurrentCellValue("port_c_union_cap") = port_c_union_part_number
    GoExcel.CurrentCellValue("port_c_screw_kit") = port_c_screw_part_number

    この規則の前述のセクション内の port_b_size と同様に、Port B に関連する値の条件付き処理に注目してください。

  6. この規則の最後の部分では、変更内容をスプレッドシートに保存します。[スニペット]領域内の[Excel データのリンク]ノードからアクセスできる GoExcel.Save 関数を使用します。

    コード ブロックをコピーする

    GoExcel.Save
  7. [OK] をクリックし、規則を保存して閉じます。規則が閉じる際に実行されるとともに、スプレッドシートが更新されます。この規則は、実行後にスプレッドシートを自動的に閉じます。
  8. スプレッドシート part_number.xls を Excel で開き、その内容が更新されていることを確認します。この規則では、すでに Excel から開かれているスプレッドシートは更新されないため、規則が再び実行される前にスプレッドシート ドキュメントを閉じてください。

[前へ] | [次へ]