• 検索結果がありません。

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

N/A
N/A
Protected

Academic year: 2021

シェア "D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* ExcelやWordとやりとりする 2015.9.19~9,20 仕様 ・Excelの場合は、処理メニュー選択用の新しいフォームを開き、この実行ファイルと同じフォルダにある「test.xlsb」を開き、主に単独のセ ルやセル範囲に値を書き込む処理をいろいろテストする。 ・Wordの場合は、処理メニュー選択用の新しいフォームを開き、この実行ファイルと同じフォルダにある「test.docx」を開き、文章を追加し てフォントの大きさを変えたり、センタリングしたり、表を追加し、文字を書き込んだりする。 準備 あらかじめ、Visual Studioのメニューバーから 「プロジェクト」→「参照の追加」で出てくる「参照マネージャー」で

「COM」タブから「Microsoft Excel 15.0 Object Libraly」と「Microsoft Word 15.0 Object Library」の 2つにチェックを入れ、「OK」をクリックして、 参照設定を有効にしておく(Office 2013の場合)。 */ using Microsoft.Office.Interop.Excel; using Microsoft.Office.Interop.Word; using System; using System.IO; using System.Windows.Forms; namespace ExcelAndWord {

public partial class MainForm : Form { public MainForm() { InitializeComponent(); } // Excel, Wordのインスタンス作成

internal Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application(); internal Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application(); internal Workbook WB;

(2)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\MainForm.cs 2 private void MainForm_Load(object sender, EventArgs e)

{

// Excel, Wordをいったんは非表示にしておく。こうするとタスクバーにも表示されない。 appExcel.Visible = false;

WB = appExcel.Workbooks.Open(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + @"\test.xlsb"); appWord.Visible = false;

DOC = appWord.Documents.Open(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + @"\test.docx"); }

private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { try { WB.Close(false); appExcel.Quit(); }

catch (Exception ex) { MessageBox.Show("ワークシートは既に閉じられています"); } try { DOC.Close(false); appWord.Quit(); }

catch (Exception ex) {

MessageBox.Show("文書は既に閉じられています"); }

}

private void btnExcel_Click(object sender, EventArgs e) {

// Excelの操作メニューを開く

var ExcelForm = new ControlExcel();

(3)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\MainForm.cs 3 private void btnWord_Click(object sender, EventArgs e)

{

// Wordの操作メニューを開く var WordForm = new ControlWord();

WordForm.mfm = this; // ExcelFormの変数mfmにこのフォームへの参照を代入しておく WordForm.ShowDialog();

} } }

(4)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\ControlExcel.cs 1 /* Excelのコントロールをする */ using Microsoft.Office.Interop.Excel; using System; using System.Windows.Forms; namespace ExcelAndWord {

public partial class ControlExcel : Form {

public ControlExcel() {

InitializeComponent(); }

internal MainForm mfm; // このフォームが開いたとき、この変数で呼んだMainFormへの参照を受け取る Worksheet WS;

private void ControlExcel_Load(object sender, EventArgs e) {

chkDispExcel.Checked = true; // 初期状態ではExcelは見えるようにしておく }

private void chkDispExcel_CheckedChanged(object sender, EventArgs e) {

mfm.appExcel.Visible = chkDispExcel.Checked ? true : false; // チェックボックスが切り替わるたびにExcelの可視、不可視を 切り替える

}

// セルに値を書き込むときの基本コード

private void btnA1_Click(object sender, EventArgs e) {

WS = mfm.WB.Worksheets.Add(After: mfm.WB.Worksheets[mfm.WB.Worksheets.Count]); // 名前つき引数を使うことにより、余分な カンマを使わずに済む

(5)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\ControlExcel.cs 2 // セル範囲A1:J20のセル1個1個にデータを書き込む(途中の処理経過を見せる)(速度がもっとも遅い)

private void btnA1J20CellScreenUpdatingTrue_Click(object sender, EventArgs e) { WS = mfm.WB.Worksheets.Add(After: mfm.WB.Worksheets[mfm.WB.Worksheets.Count]); for (var r = 1; r <= 20; r++) for (var c = 1; c <= 10; c++) WS.Cells[r, c].Value = (r - 1) * 10 + c; } // セル範囲A1:J20のセル1個1個にデータを書き込む(途中の処理経過を見せない)(速度がやや改善) private void btnA1J20CellScreenUpdatingFalse_Click(object sender, EventArgs e)

{ WS = mfm.WB.Worksheets.Add(After: mfm.WB.Worksheets[mfm.WB.Worksheets.Count]); mfm.appExcel.Application.ScreenUpdating = false; for (var r = 1; r <= 20; r++) for (var c = 1; c <= 10; c++) WS.Cells[r, c].Value = (r - 1) * 10 + c; mfm.appExcel.Application.ScreenUpdating = true; } // 結果的には上と同じになるが、まずは書き込むべきデータを配列に用意しておき、セル範囲A1:J20に一挙に書き込む(もっとも速 い)

private void btnA1J20Array_Click(object sender, EventArgs e) {

WS = mfm.WB.Worksheets.Add(After: mfm.WB.Worksheets[mfm.WB.Worksheets.Count]); var buf = new object[20, 10];

for (var r = 0; r < 20; r++) for (var c = 0; c < 10; c++) buf[r, c] = r * 10 + (c + 1); WS.Range["A1:J20"].Value = buf; } } }

(6)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\ControlWord.cs 1 /* Wordのコントロールをする */ using Microsoft.Office.Interop.Word; using System; using System.Windows.Forms; namespace ExcelAndWord {

public partial class ControlWord : Form {

public ControlWord() {

InitializeComponent(); }

internal MainForm mfm; // このフォームが開いたとき、この変数で呼んだMainFormへの参照を受け取る private void ControlWord_Load(object sender, EventArgs e)

{

chkDispWord.Checked = true; // 初期状態ではWordは見えるようにしておく }

private void chkDispWord_CheckedChanged(object sender, EventArgs e) {

mfm.appWord.Visible = chkDispWord.Checked ? true : false; // チェックボックスが切り替わるたびにExcelの可視、不可視を切 り替える

}

private void btnGo_Click(object sender, EventArgs e) {

var myDoc = mfm.DOC;

// 文書の先頭に「ワード文書テスト」という文章を挿入し、大きさを20ptにし、センタリングする myDoc.Range(0, 0).InsertAfter("ワード文書テスト\n");

(7)

D:\Documents\Visual Studio 2015\Projects\MyHomePage用サンプル\ExcelAndWord\ExcelAndWord\ControlWord.cs 2 // 1行空ける。その際、フォントサイズを10.5ptに戻し、文字位置も両端ぞろえに戻す。 myDoc.Content.InsertParagraphAfter(); myDoc.Paragraphs[2].Range.Font.Size = 10.5f; myDoc.Paragraphs[2].Alignment = WdParagraphAlignment.wdAlignParagraphJustify; // 3×4型の表を挿入し、適当に文字を入れる。表の罫線は表を挿入しただけでは、印刷時に非表示となる。 var tbl1 = myDoc.Tables.Add(myDoc.Range(myDoc.Content.StoryLength - 1), 3, 4); tbl1.Cell(1, 1).Range.Text = "1行1列目"; tbl1.Cell(2, 3).Range.Text = "2行3列目"; // 1行空ける。 myDoc.Content.InsertParagraphAfter(); // 2×3の表を挿入する。今度は表の罫線をフォーマットする。 var tbl2 = myDoc.Tables.Add(myDoc.Range(myDoc.Content.StoryLength - 1), 2, 3); tbl2.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle; tbl2.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth150pt; tbl2.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle; tbl2.Borders.InsideLineWidth = WdLineWidth.wdLineWidth025pt; } } }

参照

関連したドキュメント

事務所で申込み、代金全額を支払い、引渡しを受けた クーリング・オフ × 喫茶店で申込み、代金全額を支払い、引渡しを受けた

BRAdmin Professional 4 を Microsoft Azure に接続するには、Microsoft Azure のサブスクリプションと Microsoft Azure Storage アカウントが必要です。.. BRAdmin Professional

Excel へ出力:見積 受付・回答一覧に表示されている伝票を Excel に出力 することが可能.

注意: 操作の詳細は、 「BD マックス ユーザーズマニュ アル」 3) を参照してください。. 注意:

日臨技認定センターの認定は 5 年毎に登録更新が必要で、更新手続きは有効期間の最終

(※)Microsoft Edge については、2020 年 1 月 15 日以降に Microsoft 社が提供しているメジャーバージョンが 79 以降の Microsoft Edge を対象としています。2020 年 1

大六先生に直接質問をしたい方(ご希望は事務局で最終的に選ばせていただきます) あり なし

○社会福祉事業の経営者による福祉サービスに関する 苦情解決の仕組みの指針について(平成 12 年6月7 日付障第 452 号・社援第 1352 号・老発第