次はエクセルシート内き入力された文字列を読み取ります。
応用が利く部分ですのでマスターしてください。
今回のお題は次の通りです。
事前にエクセルシートを作成します。例として以下のようなものを作り、任意のフォルダに保存しました。
B列に記入している名前をメッセージボックスに表示します。また、No.8の栗田さんの後は、次のデータがないことを表示してください。
「Excelアプリケーションスコープ」のアクティビティから始めます。
このアクティビティをダブルクリックします。
※「Excelアプリケーションスコープ」がアクティビティにない場合は、ダウンロードして追加してください
❶には先に保存した対象となるエクセルのフルパスを入力します。
❷は処理中にエクセルを開いてディスプレイ上で処理をみることができるか
❸は「Excelアプリケーションスコープ」内での処置ごとに、エクセルシートを保存するか
です。処理が大きくなると❷や❸(特に❸)は外して処理速度をあげますが、今回はデフォルトのままでいきます。
「Excelアプリケーションスコープ」の中には実行という名前の「シーケンス」アクティビティがデフォルトで入っていますが、「シーケンス」では表現しにくい動作があるのでここでは「フローチャート」のアクティビティに変更します。
「フローチャート」アクティビティをダブルクリックして、アクティビティ内の動作を編集します。
まず、セルに入力された値を読み取ります。「セルを読み込み」のアクティビティを接続します。なお、「セルを読み込み」のアクティビティを接続する場合には注意が必要です。
「セルを読み込み」アクティビティに関する注意
アクティビティの検索窓で「セルを読み込み」を入力すると下の❹と❺の二つのアクティビティが表示されます。
❹は[アプリの連携]-[Excel]内
❺は[システム]-[ファイル]-[ワークブック]内
にそれぞれあり、名前は同じですが中身が異なります。「Excelアプリケーションスコープ」内での処理には❹を用いてください。
最初はB2のセルから読み取り、次にB3、B4、B5・・・・と行数を上げていきますので、あらかじめ行数を変数パネルで定義しておきます。
行数は整数ですので、変数をIneteger型であるInt32に設定します❻。
さらに、最初はB2セルからなので規定値(初期値と理解してください)❼に2を入力します。
Integer型は文字列であるString型と異なり引用符(":ダブルクォーテーション)で囲む必要はありません。
「セルを読み込み」アクティビティのプロパティで
❽[入力]-[セル]に "B"&Row と入力します。
❾[出力]-[結果]に変数定義した変数の名称を入力します。
お題では、セルの値(ここでは変数Resultの結果)が空欄の場合には、空欄の旨を表記する必要があります。分岐を適用します。
フロー条件分岐を接続し、プロパティの[その他]-[条件]❿にResult=""と記入します。
つまり、
対象のセルが空欄であればTrue方向に
対象のセルが空欄でなければFalse方向に振り分けられます
「フロー条件分岐」のTrue側(セルのデータがない)に「メッセージボックス」アクティビティを接続し、⓫に"これ以上のデータはありません"と入力します。
一方、セルのデータがある場にはセル内の記載を表示させないといけないので、False側にも「メッセージボックス」アクティビティを接続し、⓬で変数Resultを表記するように設定します。
2行目の出力が終わったら次は3行目の出力です。
この段階で2である変数Rowを3に変更しないといけません。
「代入」アクティビティを接続し、⓭の左辺に変数Row、右辺にRow+1を入力し、⓮の接続を行います。これにより「代入」アクティビティ通過以降の変数Rowは、アクティビティ通過前を+1した値になります。
では、この実行結果を1巡目から示します。成功です。
コメント