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

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

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

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

Q&A

解決済

1回答

2914閲覧

C#でのExcelの複数シートアクセスについて

yar

総合スコア16

C#

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

0グッド

0クリップ

投稿2020/11/24 04:10

編集2020/11/24 04:12

シート1を指定してrangeで指定したセル範囲の値を出力した後、シート10を指定しまたrangeで指定したセル範囲の値を出力したいです。現在以下のようなソースコードを書いており、実行するとシート1の処理はうまくいくのですがシート10にするとrange.value2内がなぜかシート指定しているのにもかかわらず、シート1のものになってしまいます。どうすればシートを指定してrangeで値を出力することができますでしょうか?

// Excelアプリケーション生成 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); // 既存のBookを開く Microsoft.Office.Interop.Excel.Workbooks xlBooks = xlApp.Workbooks; Microsoft.Office.Interop.Excel.Workbook xlBook = xlBooks.Open(System.IO.Path.GetFullPath(@"Excel名")); // シートを選択する Microsoft.Office.Interop.Excel.Sheets xlSheets = xlBook.Worksheets; // Excelのファイル名取得 string ExcelBookFileName = xlBook.FullName; // Excelファイルを開く Workbook wb = xlApp.Workbooks.Open(ExcelBookFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // シート指定 ExcellData.ws1 = ExcellData.wb.Sheets[1]; range=.xlApp.get_Range("A1", "D100); for(int a=1;a<100:a++) { textbox1.Text=range.value2[a,a]; } // シート指定 ExcellData.ws1 = ExcellData.wb.Sheets[10]; range=.xlApp.get_Range("A1", "D100); for(int a=1;a<100:a++) { textbox1.Text=range.value2[a,a]; }

C#、FormApplicationでMicrosoft.Office.Interop.Excelを使用して開発しています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/11/24 04:33 編集

ExcellData.ws1 というのに代入したシートオブジェクトはどこで使用されているんでしょう? そもそもExcellData.ws1はどこから出てきたんでしょう?提示されたソースでは定義されていないようですが
yar

2020/11/24 04:35

>>radian ExcellData.ws1で設定したとき、自動的にrange.Value2に代入されるものだと思っていたのですが、違うのですか?
yar

2020/11/24 04:46

>>radian 今理解しました。「range=.xlApp.get_Range("A1", "D100);」ではシートが指定されていないので「 ExcellData.range = ExcellData.ws1.get_Range("A1", "D100" );」のようにしてws1を指定するということですね。ありがとうございます。
guest

回答1

0

自己解決

// シート指定 ExcellData.range = ExcellData.xlApp.get_Range("C"+test, "D" + test);

// シート指定 ExcellData.range = ExcellData.ws1.get_Range("C"+test, "D" + test);

にしてwsを指定して代入することで解決しました。ヒントをくださったradian様。ありがとうございます。

投稿2020/11/24 04:51

yar

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問