C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 遅延バインディングのAutoFitがうまくいきません


(過去ログ 115 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■67825 / inTopicNo.1)  遅延バインディングのAutoFitがうまくいきません
  
□投稿者/ 裕猫 (66回)-(2013/09/04(Wed) 13:50:28)

分類:[C#] 

開発環境 Windows7Pro VisualStudio2008 C# EXCEL2007
実機windowsXP SP3 EXCEL2000
 遅延バインディングを使ってAutoFitをさせようとしました。がうまくいきません。
        public static void EX_OpenBook(string FileName, int SheetNo)
        {
            Type classType = Type.GetTypeFromProgID("Excel.Application");
            app = Activator.CreateInstance(classType);
            books = app.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, app, null);
            parameters = new object[13];
            parameters[0] = FileName;
            for (int CT1 = 1; CT1 < 13; CT1++) { parameters[CT1] = Type.Missing; }
            book = books.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, books, parameters);
            sheets = book.GetType().InvokeMember("Sheets", BindingFlags.GetProperty, null, book, null);
            sheet = sheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, sheets, new object[] { SheetNo });
        }
でファイルをひらき
        public static void EX_AutoFit(string EndCell)
        {
            Cells = sheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, sheet, null);
            Range = Cells.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, Cells, new object[] { "A1", EndCell});
            columns = Range.GetType().InvokeMember("Columns", BindingFlags.SetProperty, null, app, null);
            Range.GetType().InvokeMember("AutoFit", BindingFlags.SetProperty, null, columns, null);
        }
でAutoFitさせようとしていますが。Autofitでエラーで止まってしまいます。AutoFitはEXCELの関数なのでEXCELにキャストしなければならないとかいてありましたが、その

あたりができていないと思います。どう書いたらよいでしょう? よろしくお願いいたします。

引用返信 編集キー/
■67826 / inTopicNo.2)  Re[1]: 遅延バインディングのAutoFitがうまくいきません
□投稿者/ shu (378回)-(2013/09/04(Wed) 14:20:38)
No67825 (裕猫 さん) に返信
> columns = Range.GetType().InvokeMember("Columns", BindingFlags.SetProperty, null, app, null);
SetProperty => GetProperty

> Range.GetType().InvokeMember("AutoFit", BindingFlags.SetProperty, null, columns, null);
SetProperty => InvokeMethod


でどうでしょう?
引用返信 編集キー/
■67832 / inTopicNo.3)  Re[2]: 遅延バインディングのAutoFitがうまくいきません
□投稿者/ 裕猫 (67回)-(2013/09/04(Wed) 15:15:49)
No67826 (shu さん) に返信
>> Range.GetType().InvokeMember("AutoFit", BindingFlags.SetProperty, null, columns, null);
> SetProperty => InvokeMethod
気がつきませんでした。InvokeMethod完全に頭になかったです。で書き換えてやってみたのですが、別のところで問題が出てしまいました。
Range = Cells.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, Cells, new object[] { "A1", EndCell});
のところです。EndCellに "Z100" と入れてやってみたところ「呼び出しのターゲットが例外をスローしました。」というエラーを出します。あれ?Range は文字での範囲指定できるはずなのになぜ? となってしまいました。わかりますでしょうか?
引用返信 編集キー/
■67833 / inTopicNo.4)  Re[3]: 遅延バインディングのAutoFitがうまくいきません
□投稿者/ shu (379回)-(2013/09/04(Wed) 15:25:22)
No67832 (裕猫 さん) に返信
> ■No67826 (shu さん) に返信
> >> Range.GetType().InvokeMember("AutoFit", BindingFlags.SetProperty, null, columns, null);
>>SetProperty => InvokeMethod
> 気がつきませんでした。InvokeMethod完全に頭になかったです。で書き換えてやってみたのですが、別のところで問題が出てしまいました。
> Range = Cells.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, Cells, new object[] { "A1", EndCell});
> のところです。EndCellに "Z100" と入れてやってみたところ「呼び出しのターゲットが例外をスローしました。」というエラーを出します。あれ?Range は文字での範囲指定できるはずなのになぜ? となってしまいました。わかりますでしょうか?

RangeクラスのItemプロパティは(RowIndex,ColumnIndex)のみです。
RangeクラスのRangeプロパティはアドレス指定が出来ます。
引用返信 編集キー/
■67834 / inTopicNo.5)  Re[4]: 遅延バインディングのAutoFitがうまくいきません
□投稿者/ 裕猫 (68回)-(2013/09/04(Wed) 15:33:53)
No67833 (shu さん) に返信
> RangeクラスのItemプロパティは(RowIndex,ColumnIndex)のみです。
> RangeクラスのRangeプロパティはアドレス指定が出来ます。
ありがとうございました。ご指摘の通りに修正して無事成功しました。本当にありがとうございました。m(_  _)m
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -