なでしこは標準でエクセルに関する命令があります。
たとえば…
エクセル起動
エクセル開く
エクセルシート列挙
エクセルシート注目
エクセルシート名変更
エクセルCSV保存
エクセルセル一括取得
…などなど
命令名だけで何ができそうか分かりやすいのがいいですね。
ただし「エクセル開く」で開いたファイルにしか操作が効かないので、用途はある程度限られます。
とりあえずサンプルを作ってみました。
なでしこでシートをたくさん作る
//シートをたくさん作る
エクセル起動
エクセル新規ブック
5回
エクセル新規シート
エクセルシート名取得
それを回数にエクセルシート名前変更
これで新規のエクセルに1~5という名前のシートが作られます。
エクセルシート名前変更
の引数をくふうすればこうなります。↓
なでしこでフォルダ内のエクセルからCSVを作る
作業フォルダは「D:\」
エクセル起動
エクセル警告無視
「*.xlsx」のファイル列挙して反復
「{作業フォルダ}{対象}」をエクセル開く
「{マイドキュメント}{対象}.csv」へエクセルCSV保存
エクセル閉じる
おわり
Dドライブ直下にあるxlsxファイルを列挙してエクセルCSV保存でCSVファイルにしていきます。
エクセル警告無視を入れてありますが、開いたら文句を言われるファイル対策になるかと思います。(適当)
なでしこの母艦にドロップしたファイルを操作する
母艦のファイルドロップ許可はオン
母艦のファイルドロップした時は~
母艦のドロップファイルを反復
エラー監視
対象をエクセル開く //エクセルが起動していれば開く
エラーならば
エクセル起動 //エクセルが起動してから開く
対象をエクセル開く
「A1」から「D5」までエクセル一括取得して表示
エクセル閉じる
ドロップしたファイルを処理する場合を考えてみます。
あらかじめエクセル起動をしておいてドロップしたファイルを開けばいいのですが、
ユーザーが途中でエクセルを閉じた場合エクセル開く
が失敗します。
なでしこが操作できるエクセルが起動しているかどうかを調べる命令はないので、エラー監視
してひらけばいいんじゃないかと思います。
データを取得した後は閉じておきましょう。
複数ファイルがドロップされたときもちゃんと動くようにしたいですね。
なでしこでエクセルのデータを変数に入れる
元データ
エクセル起動
「D:\えらげ.xlsx」をエクセル開く
「A」のエクセル最下行取得 //A列の最下行
「A1」から「E{それ}」までエクセル一括取得 //CSVの文字列で返ってくるらしいので
それをCSV取得 //配列にする
それを反復
もし回数が1ならば、見出しは対象を「,」で配列結合
対象を見出しに変数分配
キャラ名を表示
属性を表示
ロールを表示
「--------」を表示
結果
名簿てきなものなので、A列の最下行取得でエクセル一括取得の範囲を広げています。
列もやったほうがいいけど今回は省略。
エクセル一括取得は返ってくる型が文字列なので、CSV取得で配列にします。
変数分配の書式は
(配列)を「変数名,変数名,変数名」に変数分配
こんな感じです。
キャラ名=対象[0]
属性=対象[1]
ロール=対象[2]
と同じ結果になります。
変数分配を使うメリットとしては、元データに列が挿入されてもプログラムを直さなくて済む可能性があることです。
↑元データの2列目にレア度を挿入さえてしまったが
見出しを変数名にしているので結果はかわらない。
内部に変数が増えただけ。