粗茶でございます日本語 プログラミング 言語 「なでしこ」 大好き 

このページの記事目次 (tag: なでしこ2.0 の検索結果)

total 2 pages  次のページ →  

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://nadesocha.blog.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | ホーム | ↑ ページ先頭へ ↑ |

日本語プログラミング言語なでしこ for JavaScript

   ↑  2012/08/14 (火)  カテゴリー: イベント
 2012年8月5日のなでしこ勉強会にて、クジラさんと粗茶の発表した資料を下記に公開します。

注意!
 サイトの制限により、PDFファイルをアップロードできませんので、拡張子をtxtにしています。必ずリンクを右クリックして「対象をファイルに保存」して下さい。ダウンロード後に拡張子「.txt」を「.pdf」に変更してからご覧下さい。

 資料ダウンロード
  ・クジラ飛行机
  ・粗茶


 クジラさんの発表の中で、なでしこのJavaScript版の開発をしてみようという案がありました。そしてそのJS版なでしこのプロジェクト名をどうしようかという話になったのですが、その場のメンバーではあまり良い案が出ませんでしたので、みなさんで考えてみて下さい。
 たとえば、「日本語プログラミング言語なでしこ.js」とか
 また、JS版なでしこは、こんな風になればいい!みたいなアイデアとかもどんどんお寄せ下さい。

 さて、現行版のなでしこですが、よくある質問で、「Macで動作しますか?」と聞かれるのですが、公式回答として、「MacにWindowsをインストールすれば動作します。」とのことです。
スポンサーサイト

この記事に含まれるtag : なでしこ2.0 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-156.html

2012/08/14 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

OSC京都&勉強会終了

   ↑  2012/08/05 (日)  カテゴリー: イベント
 8月4日のOSC京都なでしこ出展と、5日のなでしこ勉強会は無事に終了しました。

 参加いただいた皆様、お疲れ様でした。そしてありがとうございました。

 勉強会は、USTREAMでライブ中継していたのですが、視聴者はほとんどが私たちでした。
 なお、録画したものがありますので、暇なときにでもご覧下さい。
http://www.ustream.tv/channel/日本語プログラミング言語-なでしこ-勉強会

 今回の中継では、プロジェクタのピント合わせができなかったこともあり、文字がはっきりと見えませんでした。また、音声も十分に拾えなかったので、反省しています。
 次回は、もうちょっとましな放送ができるようにします。

 準備不足だったり、いつも行き当たりばったりの進行なので、ぐだぐだでしたが、皆さんのいろんな話が聞けてとても楽しかったです。

この記事に含まれるtag : なでしこ2.0 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-154.html

2012/08/05 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

Ustreamを試してみた

   ↑  2012/07/16 (月)  カテゴリー: イベント
 8月5日のなでしこ勉強会で、参加できないユーザーのために、ライブ中継できないかと考え、今日JoshinでWebカメラを買ってきました。
 職場で、専用のノートPCをセットアップし、カメラを設置してから、Ustreamに接続テストしてみました。結果、ちゃんと表示できましたので、本番でも活躍してくれることを願っています。
 ちなみに、番組ページはhttp://www.ustream.tv/channel/日本語プログラミング言語-なでしこ-勉強会です。

この記事に含まれるtag : なでしこ2.0 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-153.html

2012/07/16 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

エクセルプラグインの作成

   ↑  2012/04/29 (日)  カテゴリー: なでしこ全般
 現在、なでしこ2.0向けのエクセルプラグインを作成中なのですが、これがなかなか手強くて、また私の勉強不足もあって、うまい解決がみつかりません。

 現在のところ、実装しているのは次の命令です。

' アプリケーション
・エクセルインストールチェック Excelがインストールされているか調べる。(1:インストールされている、0:インストールされていない)
・エクセル起動 FLAGで|FLAGに|FLAGへ Excelを起動する。(FLAG=1:可視、FLAG=0:不可視で起動)
・エクセル終了 Excelを終了する。ブックは保存しない。
・エクセル起動取得 Excelが起動しているか調べる。(1:起動している、0:起動していない)
・エクセルバージョン取得 Excelのバージョンを取得する。
・エクセル可視設定 FLAGで|FLAGに|FLAGへ Excelの可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセル可視取得 Excelの可視を取得する。(1:可視、0:不可視で起動)
・エクセル警告設定 FLAGで|FLAGに|FLAGへ Excelの警告表示を設定する。(FLAG=1:警告あり、FLAG=0:警告なし)
・エクセル警告取得 Excelの警告表示を取得する。(1:警告あり、0:警告なし)
・エクセル窓設定 STATEで|STATEに|STATEへ Excelのウィンドウ状態を設定する。(STATE=『最大化|最小化|標準』)
・エクセル窓取得 Excelのウィンドウ状態を取得する。(『最大化|最小化|標準』)
・エクセルタイトル設定 TITLEで|TITLEに|TITLEへ ExcelのウィンドウタイトルをTITLEに設定する。
・エクセルタイトル取得 Excelのウィンドウタイトルを取得する。
・エクセルステータスバー設定 STRINGで|STRINGに|STRINGへ ExcelのステータスバーをSTRINGに設定する。STRING=「」の時、ステータスバーを標準にする。
・エクセルステータスバー取得 Excelのステータスバーを取得する。
・エクセルステータスバー可視設定 FLAGで|FLAGに|FLAGへ Excelのステータスバーの可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセルステータスバー可視取得 Excelのステータスバーの可視を取得する。
・エクセル画面更新設定 FLAGで|FLAGに|FLAGへ Excelの画面更新を設定する。(FLAG=1:画面更新あり、FLAG=0:画面更新なし)
・エクセル画面更新取得 Excelの画面更新を取得する。(1:画面更新あり、0:画面更新なし)
' ブック
・エクセルブック追加 Excelに新規ブックを追加する。
・エクセルブック開く FILEを|FILEの|FILEで|FILEから Excelにファイル名を指定してブックを開く。
・エクセルブック保存 FILEを|FILEの|FILEで|FILEへ|FILEに ファイル名を指定して現在のブックを保存する。FILEを省略すると現在のブックを上書き保存する。
・エクセルブックマクロ可能取得 アクティブブックでなでしこからマクロ(VBA)が利用できるか調べる。(1:利用可能、0:利用不可)
・エクセルブック閉じる アクティブブックを保存しないで閉じる。
・エクセルブック保存後閉じる アクティブブックを上書き保存して閉じる。
・エクセルブック変更保存設定 FLAGへ|FLAGに|FLAGで アクティブブックを変更後保存したか設定する。(FLAG=1:変更していないか変更して保存した、FLAG=0:変更したが保存していない)
・エクセルブック変更保存取得 アクティブブックを変更後保存したか取得する。(1:変更していないか変更して保存した、0:変更したが保存していない)
・エクセルブック列挙 開いているブック名を列挙する。
・エクセルブックアクティブ設定 BOOKを|BOOKの|BOOKへ|BOOKで ブックをアクティブにする。(BOOK:ブック名)
・エクセルブックアクティブ取得 アクティブなブック名を取得する。
' シート
・エクセルシート枠線可視設定 FLAGで|FLAGに|FLAGへ Excelのシートの枠線の可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセルシート枠線可視取得 Excelのシートの枠線の可視を取得する。(1:可視、0:不可視)
' セル
・エクセルセルA1形式変換 CELLSの|CELLSを|CELLSで|CELLSから 「row,col」をA1形式のセル番地に変換する。(row:行番号、col:列番号)
・エクセルセル行番号取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の行番号を取得する。(RANGE:A1形式のセル番地)
・エクセルセル列番号取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の列番号を取得する。(RANGE:A1形式のセル番地)
・エクセルセル値取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の値を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル値設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にVALUEを設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル式取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の式を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル式設定 RANGEへ|RANGEにEXPを|EXPで セル番地「RANGE」に式「EXP」を設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル文字取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の値を文字列として取得する。値を表示形式のまま取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル文字設定 RANGEへ|RANGEにTEXTを|TEXTで セル番地「RANGE」に文字列「TEXT」を設定する。文字列の前に「'」が付く。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセルシリアル値取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」のシリアル値を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセルシリアル値設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にシリアル値「VALUE」を設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル値範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の値を範囲取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル値範囲設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にVALUEを範囲設定する。(RANGE:A1形式のセル番地、VALUE:配列)
・エクセルセル式範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の式を取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル式範囲設定 RANGEへ|RANGEにEXPを|EXPで セル番地「RANGE」に式「EXP」を設定する。(RANGE:A1形式のセル番地、EXP:配列)
・エクセルセル文字範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の式を取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル文字範囲設定 RANGEへ|RANGEにTEXTを|TEXT セル番地「RANGE」に文字列「TEXT」を設定する。(RANGE:A1形式のセル番地、TEXT:配列)

 とりあえず、かんたんなものから実装していますが、下記の問題が未解決です。

1.関数(命令)の名前が冗長すぎる
 ごらんのとおり、関数はかならず「エクセル」で始まります。次に対象のオブジェクト「シート」や「セル」が続いて、処理名となります。そのため、「エクセルセル値取得」のように、どうしても長い名前になってしまいます。
 すっきりさせるために、省略形を使ったり、命名ルールを無視するようなことはしたくありません。
2.プロパティとしての関数がほしい
 たとえば、「エクセルセル値取得」と「エクセルセル値設定」の関数のように、データを取得する関数と、データを設定する関数の2種類が必要です。
 ほんとうは、
   「A1」のエクセルセル値を表示
   「A1」のエクセルセル値は「愛」
 という感じに、ひとつの関数で取得と設定を行いたいのですが、プロパティ的な関数の作成方法がわかりません。
3.二次元配列の未実装
 なでしこ2.0には、まだ二次元配列が実装されていません。
 セルの範囲設定や範囲取得がもっと効率よくできればいいのですが。

 このうち、2と3はクジラさんに要望していますが、1だけは頭がイタイところです。
 関数名のわかりやすさを取るか、キータイプのしやすさを取るか、あなたならどっち!?

 なお、開発中のエクセルプラグインのVBプロジェクトはこちらです。VisualStudio2010で開発していますプラグインの様式変更により使用できません。

この記事に含まれるtag : なでしこ2.0 プラグイン Excel 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-144.html

2012/04/29 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

Excelプラグイン途中経過

   ↑  2011/01/29 (土)  カテゴリー: なでしこ全般
 Excel関係のプラグインをちまちまと作っていますが、いまのところここまでしかできていません。ひとつの命令をつくるたびに、いろいろとテストしていますので、結構時間がかかったりしています。
using System;
using System.Collections.Generic;
using System.Text;

using NakoPlugin;
using NakoExcel = Microsoft.Office.Interop.Excel;
using VBIDE = Microsoft.Vbe.Interop;

using System.Windows.Forms; //動作チェック用のダイアログ表示に使用

namespace NakoPluginOfficeExcel
{
public class NakoPluginOfficeExcel : INakoPlugin
{
//--- プラグインの宣言 ---
string _description = "エクセル命令 by 粗茶";
double _version = 1.0; //2011.1.7より作業開始
//--- プラグイン共通の部分 ---
public double TargetNakoVersion { get { return 2.0; } }
public bool Used { get; set; }
public string Name { get { return this.GetType().FullName; } }
public double PluginVersion { get { return _version; } }
public string Description { get { return _description; } }
//--- プラグインの初期化処理 ---
public void PluginInit(INakoInterpreter runner) { }
//--- プラグインの終了処理 ---
public void PluginFin(INakoInterpreter runner) { NakoExcelEnd(); }
//--- 変数の定義 ---
NakoExcel._Application xlApp; //Excelアプリケーション
NakoExcel.Workbooks xlBooks;
NakoExcel._Workbook xlBook;
NakoExcel.Sheets xlSheets;
NakoExcel._Worksheet xlSheet;
NakoExcel.Range xlRange;
VBIDE.VBComponents xlModules;

//--- 関数の定義 ---
public void DefineFunction(INakoPluginBank bank)
{
//エクセル
#region アプリケーション関係
//+アプリケーション
bank.AddFunc("エクセル起動", "FLAGで|FLAGに|FLAGへ", NakoVarType.Void, _xlStart, "エクセルを起動する。FLAG=1:可視、FLAG=0:不可視で起動。", "えくせるきどう");
bank.AddFunc("エクセル終了", "", NakoVarType.Void, _xlEnd, "エクセルを終了する。", "えくせるしゅうりょう");
bank.AddFunc("エクセル起動状態", "", NakoVarType.Int, _xlStarted, "エクセルが起動しているか確認する。1:起動している。0:起動していない。", "えくせるきどうじょうたい");
bank.AddFunc("エクセルバージョン", "", NakoVarType.String, _xlVer, "エクセルのバージョンを取得して返す。", "えくせるばーじょん");
bank.AddFunc("エクセル可視変更", "FLAGで|FLAGに|FLAGへ", NakoVarType.Void, _xlVisibleSet, "エクセルの可視を変更する。FLAG=1:可視、FLAG=0:不可視", "えくせるかしへんこう");
bank.AddFunc("エクセル可視状態", "", NakoVarType.Int, _xlVisibleGet, "エクセルの可視を取得して返す。1:可視、0:不可視。", "えくせるかしじょうたい");
bank.AddFunc("エクセル警告変更", "FLAGで|FLAGに|FLAGへ", NakoVarType.Void, _xlAlertSet, "エクセルの警告を変更する。FLAG=1:警告有り、FLAG=0:警告無視。", "えくせるけいこくへんこう");
bank.AddFunc("エクセル警告状態", "", NakoVarType.Int, _xlAlertGet, "エクセルの警告を取得して返す。1:警告有り、0:警告無視。", "えくせるけいこくじょうたい");
bank.AddFunc("エクセル窓変更", "STATEで|STATEに|STATEへ", NakoVarType.Void, _xlWindowStateSet, "エクセルのウインドウを最大化・最小化する。STATE=「最大化|最小化|標準」", "えくせるまどへんこう");
bank.AddFunc("エクセル窓状態", "", NakoVarType.String, _xlWindowStateGet, "エクセルのウインドウ状態を取得して返す。「最大化|最小化|標準」", "えくせるまどじょうたい");
bank.AddFunc("エクセルタイトル変更", "TITLEで|TITLEに|TITLEへ", NakoVarType.Void, _xlTitleSet, "エクセルのウインドウタイトルをTITLEに変更する。", "えくせるたいとるへんこう");
bank.AddFunc("エクセルタイトル状態", "", NakoVarType.String, _xlTitleGet, "エクセルのウインドウタイトルを取得して返す。", "えくせるたいとるじょうたい");
bank.AddFunc("エクセルステータスバー変更", "MSGで|MSGに|MSGへ", NakoVarType.Void, _xlStatusbarTextSet, "エクセルのステータスバーの内容をMSGに変更する。", "えくせるすてーたすばーへんこう");
bank.AddFunc("エクセルステータスバー状態", "", NakoVarType.String, _xlStatusbarTextGet, "エクセルのステータスバーの内容を取得して返す。", "えくせるすてーたすばーじょうたい");
bank.AddFunc("エクセルステータスバー標準", "", NakoVarType.Void, _xlStatusbarTextNormal, "エクセルのステータスバーの内容を元に戻す。", "えくせるすてーたすばーひょうじゅん");
bank.AddFunc("エクセルステータスバー可視変更", "FLAGで|FLAGに|FLAGへ", NakoVarType.Void, _xlStatusbarVisibleSet, "エクセルのステータスバーの表示を変更する。FLAG=1:表示、FLAG=0:非表示。", "えくせるすてーたすばーかしへんこう");
bank.AddFunc("エクセルステータスバー可視状態", "", NakoVarType.Int, _xlStatusbarVisibleGet, "エクセルのステータスバーの表示状態を取得して返す。1:表示、0:非表示。", "えくせるすてーたすばーかしじょうたい");
bank.AddFunc("エクセル枠線表示変更", "FLAGで|FLAGに|FLAGへ", NakoVarType.Void, _xlGridlineVisibleSet, "エクセルのセル枠線の表示を変更する。FLAG=1:表示、FLAG=0:非表示。", "えくせるわくせんひょうじへんこう");
bank.AddFunc("エクセル枠線表示状態", "", NakoVarType.Int, _xlGridlineVisibleGet, "エクセルのセル枠線の表示を取得して返す。1:表示、0:非表示。", "えくせるわくせんひょうじじょうたい");

#endregion
#region ブック関係
//+ブック
bank.AddFunc("エクセルブック追加", "", NakoVarType.Void, _xlBookAdd, "エクセルに新規ブックを追加。", "えくせるぶっくついか");
bank.AddFunc("エクセルブック開く", "FILEを|FILEで|FILEから", NakoVarType.Void, _xlBookOpen, "エクセルにFILE(ブックのパス)を開く。", "えくせるぶっくひらく");
bank.AddFunc("エクセルブック保存", "FILEを|FILEで|FILEに|FILEへ", NakoVarType.Void, _xlBookSaveAs, "", "");

#endregion
}
//--- Define Method ---
#region アプリケーション関係
//エクセル起動
public Object _xlStart(INakoFuncCallInfo info)
{
if (xlApp == null)
{
long arg = info.StackPopAsInt();
xlApp = new NakoExcel.Application { Visible = (arg != 0) }; //arg:0以外はtrue
xlBooks = xlApp.Workbooks;
}
return null;
}
//エクセル終了
public Object _xlEnd(INakoFuncCallInfo info)
{
NakoExcelEnd();
return null;
}
void NakoExcelEnd()
{
if (xlApp != null)
{
xlApp.DisplayAlerts = false;
xlApp.Quit(); //Excel終了
xlApp = null;
//GC.Collect();
}
}
//エクセル起動状態
public Object _xlStarted(INakoFuncCallInfo info)
{
int i = (xlApp != null) ? 1 : 0;
return i;
}
//エクセルバージョン
public Object _xlVer(INakoFuncCallInfo info)
{
if (xlApp != null) return xlApp.Version;
return "-1"; //Excelが起動していない
}
//エクセル可視変更
public Object _xlVisibleSet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
long arg = info.StackPopAsInt();
xlApp.Visible = (arg != 0); //arg:0以外はtrue
}
return null;
}
//エクセル可視状態
public Object _xlVisibleGet(INakoFuncCallInfo info)
{
int i = (xlApp != null && xlApp.Visible == true) ? 1 : 0;
return i;
}
//エクセル警告変更
public Object _xlAlertSet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
long arg = info.StackPopAsInt();
xlApp.DisplayAlerts = (arg != 0); //arg:0以外はtrue
}
return null;
}
//エクセル警告状態
public Object _xlAlertGet(INakoFuncCallInfo info)
{
int i = (xlApp != null && xlApp.DisplayAlerts == true) ? 1 : 0;
return i;
}
//エクセル窓変更
public Object _xlWindowStateSet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
string arg = info.StackPopAsString();
NakoExcel.XlWindowState state = NakoExcel.XlWindowState.xlNormal;
switch (arg)
{
case "最大化":
state = NakoExcel.XlWindowState.xlMaximized;
break;
case "最小化":
state = NakoExcel.XlWindowState.xlMinimized;
break;
case "標準":
state = NakoExcel.XlWindowState.xlNormal;
break;
default:
state = xlApp.WindowState; //現在の状態
//throw new NakoPluginRuntimeException("エクセル窓変更の引数に「最大化|最小化|標準」以外の文字列が指定されました。");
break;
}
xlApp.WindowState = state;
}
return null;
}
//エクセル窓状態
public Object _xlWindowStateGet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
NakoExcel.XlWindowState state = xlApp.WindowState;
switch (state)
{
case NakoExcel.XlWindowState.xlMaximized:
return "最大化";
case NakoExcel.XlWindowState.xlMinimized:
return "最小化";
case NakoExcel.XlWindowState.xlNormal:
return "標準";
}
}
return "-1"; //Excelが起動していない
}
//タイトル変更
public Object _xlTitleSet(INakoFuncCallInfo info)
{
if (xlApp != null && xlBooks != null)
{
xlApp.ActiveWindow.Caption = info.StackPopAsString();
}
return null;
}
//タイトル状態
public Object _xlTitleGet(INakoFuncCallInfo info)
{
if (xlApp != null && xlBooks != null)
{
return xlApp.ActiveWindow.Caption;
}
return "-1"; //Excelが起動していない or Bookがひとつもない
}
//ステータスバー変更
public Object _xlStatusbarTextSet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
string arg = info.StackPopAsString();
xlApp.StatusBar = arg;
}
return null;
}
//ステータスバー状態
public Object _xlStatusbarTextGet(INakoFuncCallInfo info)
{
if (xlApp != null) { return xlApp.StatusBar; }
return "";
}
//ステータスバー標準
public Object _xlStatusbarTextNormal(INakoFuncCallInfo info)
{
if (xlApp != null)
{
xlApp.StatusBar = false;
}
return null;
}
//ステータスバー可視変更
public Object _xlStatusbarVisibleSet(INakoFuncCallInfo info)
{
if (xlApp != null)
{
long arg = info.StackPopAsInt();
xlApp.DisplayStatusBar = (arg != 0); //arg:0以外はtrue
}
return null;
}
//ステータスバー可視状態
public Object _xlStatusbarVisibleGet(INakoFuncCallInfo info)
{
int i = (xlApp != null && xlApp.DisplayStatusBar == true) ? 1 : 0;
return i;
}
//枠線表示変更
public Object _xlGridlineVisibleSet(INakoFuncCallInfo info)
{
if (xlApp != null && xlBooks != null)
{
long arg = info.StackPopAsInt();
xlApp.ActiveWindow.DisplayGridlines = (arg != 0); //arg:0以外はtrue
}
return null;
}
//枠線表示状態
public Object _xlGridlineVisibleGet(INakoFuncCallInfo info)
{
int i = (xlApp != null && xlBooks != null && xlApp.ActiveWindow.DisplayGridlines == true) ? 1 : 0;
return i;
}
#endregion
#region ブック関係
//ブック追加
public Object _xlBookAdd(INakoFuncCallInfo info)
{
if (xlApp != null)
{
xlBooks.Add();
AfterBookOpen();
}
return null;
}
//ブック開く
public Object _xlBookOpen(INakoFuncCallInfo info)
{
if (xlApp != null)
{
string filename = info.StackPopAsString();
if (!System.IO.File.Exists(filename))
{ throw new NakoPluginRuntimeException("ファイル『" + filename + "』は存在しません。"); }
xlBooks.Open(filename);
AfterBookOpen();
}
return null;
}
void AfterBookOpen()
{
xlBook = xlBooks[xlBooks.Count];
xlBook.Activate();
xlSheets = xlBook.Worksheets;
xlSheet = xlSheets[1];
xlSheet.Activate();
}
//ブック保存
public Object _xlBookSaveAs(INakoFuncCallInfo info)
{
if (xlApp != null && xlBook != null)
{
bool flag = xlApp.DisplayAlerts;
string filename = info.StackPopAsString();
object format = NakoExcel.XlFileFormat.xlWorkbookNormal;
xlApp.DisplayAlerts = false;
if (filename == "")
{
xlBook.Save(); //ファイル名指定なければ上書き保存
xlApp.DisplayAlerts = flag;
return null;
}
string ext = System.IO.Path.GetExtension(filename);
ext = ext.ToLower();
switch (ext)
{
case ".xlsx":
if (double.Parse(xlApp.Version) < 12.0)
{ throw new NakoPluginRuntimeException("Excel2007以上でなければ拡張子.xlsx形式で保存できません。"); }
//マクロを含んだBookをxlsx形式で保存すれば、マクロを削除して保存する仕様です。
//次の2行のコメントを外すと、自動的にxlsm形式(マクロあり)で保存します。
//xlModules = xlBook.VBProject.VBComponents;
//if (xlModules != null) goto case ".xlsm"; //マクロを含んでいれば.xlsm
format = NakoExcel.XlFileFormat.xlOpenXMLWorkbook;
break;
case ".xls":
if (double.Parse(xlApp.Version) < 12.0) { format = NakoExcel.XlFileFormat.xlExcel9795; }
else { format = NakoExcel.XlFileFormat.xlExcel8; } //Excel2007以上の場合
break;
case ".xlsm":
if (double.Parse(xlApp.Version) < 12.0)
{ throw new NakoPluginRuntimeException("Excel2007以上でなければ拡張子.xlsm形式で保存できません。"); }
format = NakoExcel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled;
ext = ".xlsm";
break;
case ".csv":
format = NakoExcel.XlFileFormat.xlCSV;
break;
case ".txt":
format = NakoExcel.XlFileFormat.xlUnicodeText;
break;
case ".pdf":
if (double.Parse(xlApp.Version) < 12.0)
{ throw new NakoPluginRuntimeException("Excel2007以上でなければ拡張子.pdf形式で保存できません。"); }
break;
default:
throw new NakoPluginRuntimeException("保存形式が無効です。");
}
filename = System.IO.Path.ChangeExtension(filename, ext);
if (ext == ".pdf") { xlSheet.ExportAsFixedFormat(NakoExcel.XlFixedFormatType.xlTypePDF, filename); }
else { xlBook.SaveAs(filename, format); }
xlApp.DisplayAlerts = flag;
}
return null;
}
#endregion

/*
* --- マクロを扱う命令は、ユーザー側がExcelで次の設定が必要 ---
* (Excel2002、2003の場合)
* ツール>マクロ>セキュリティ>信頼できる発行元>Visual Basicプロジェクトへのアクセスを信頼するをオン
* (Excel2007、2010の場合)
* リボンの「開発」タブ>マクロのセキュリティ>VBAプロジェクトオブジェクトモデルへのアクセスを信頼するをオン
* ※「プログラミングによるVisual Basicプロジェクトへのアクセスは信頼性に欠けます」というエラーメッセージが出ないようになる。
*/
}
}

この記事に含まれるtag : なでしこ2.0 プラグイン C# Excel 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-139.html

2011/01/29 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |
申し訳ありません。 お探しの記事は現在、この ユーザーtag (Keyword) を設定していない可能性があります。 右の検索BOXで 再度用語を短めに入力していただくと記事が見つかる場合があります。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。