質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2775閲覧

1つのエクセルブック内で別のブックを開く方法が知りたいです。

tomi0416

総合スコア43

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

1クリップ

投稿2015/06/23 01:43

編集2015/06/23 02:30

1.エクセルを開く
2.エクセルアドイン、ボタンを押下する
→ モダルフォームを表示する
3.モダルフォームボタンを押下する
→ モダルフォームを閉じる。
現在開いているエクセルブックを閉じ、
エクセルテンプレートを表示する <―その際に分離してしまいます。1つにしたいです。

lang

1public partial class oForm : Form 2{ 3// Excel操作用オブジェクト 4private _Application _xlApp; 5private Workbook _xlBook; 6 7... 8 9private void oButton_Click(object sender, EventArgs e) 10{ 11var app = Globals.ThisAddIn.Application; 12var wbook = app.ActiveWorkbook; 13 14//_xlApp = new Application { DisplayAlerts = false, Visible = true };// Excelアプリケーション生成 15_xlApp = Globals.ThisAddIn.Application; 16var strActPath = wbook.Path + "/" + "test.xlsx"; 17Close(); 18wbook.Close(); 19_xlBook = _xlApp.Workbooks.Open(strActPath);// エクセルテンプレートを表示する 20 21... 22} 23} 24 25

コードは上記です。


![イメージ説明]WIDTH:600
![イメージ説明]WIDTH:600
現状の状態は上記です。


![イメージ説明]WIDTH:600
理想のイメージは上記です。

どうぞ、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

まず、Excel2013からはMDIからSDIに変更されたので、分離は回避できないです。
そして現状のコードだと、メインWorkbookのClose後に別BookのOpenを行っているので、おそらく閉じきれていないのでしょう。

実際に動かしてみないとなんともですが、
簡単な回避策としては別BookのOpen前にActiveWorkbookの参照を取得し、
Open後に直前までActiveだった取得したBookのCloseを試みることです。

投稿2015/06/23 02:00

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomi0416

2015/06/23 03:01

ありがとうございます!!! 仰せの通り、Open後にCloseしたらできました!☆” 質問前 wbook.Close(); _xlBook = _xlApp.Workbooks.Open(strActPath);// エクセルテンプレートを表示する 質問後 _xlBook = _xlApp.Workbooks.Open(strActPath);// エクセルテンプレートを表示する wbook.Close();
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問