CSharp/Office連携
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(CSharp, Office連携);
*目次 [#ge93756d]
#contents
*参考情報 [#i1777c5a]
*EXCELを操作する [#y6f4767d]
-COMインターフェイスを通してEXCELを操作する場合、参照の解...
-厳密に制御するには、[[C# - COM オブジェクトの参照カウン...
-解放を自動で行うライブラリを探して使う方法もありそう([[C...
-単にxlsファイルをEXCELで開きたい場合、Process.Start()を...
-[[システム管理者さんの憂鬱 : [C#] MicrosoftOfficeのバー...
**EXCELシートに含まれるマクロを実行する例 [#c4080268]
#pre{{
public static object CreateObject(string progId, ...
{
Type t;
if (serverName == null || serverName.Length =...
t = Type.GetTypeFromProgID(progId);
else
t = Type.GetTypeFromProgID(progId, server...
if (t == null)
{
return null;
}
return Activator.CreateInstance(t);
}
public static object CreateObject(string progId)
{
return CreateObject(progId, null);
}
private static void ShowError(Exception ex)
{
string title = ex.Message;
string content = ex.Message;
if (ex.InnerException != null)
{
content = ex.InnerException.Message;
}
MessageBox.Show(content, title);
}
public static void RunMacro(string xlsPath, strin...
{
// 指定されたマクロに引数を渡して起動するメソ...
object excel = null;
object books = null;
object book = null;
try
{
// Excel操作用COMオブジェクトを生成する
excel = CreateObject("Excel.Application");
if (excel == null)
{
throw new ApplicationException("Excel...
}
//ワークブックコレクションオブジェクトを...
books = excel.GetType().InvokeMember("Wor...
//Excelファイルのオープン
book = books.GetType().InvokeMember(
"Open", BindingFlag...
books, new object[] {
xl...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
...
// Excelファイルの表示
excel.GetType().InvokeMember("Visible", B...
//マクロ実行(Testというサブプロシージャを...
excel.GetType().InvokeMember("Run", Bindi...
//閉じる
excel.GetType().InvokeMember("Quit", Syst...
}
catch (Exception ex)
{
ShowError(ex);
}
finally
{
if (book != null)
{
Marshal.FinalReleaseComObject(book);
book = null;
}
if (books != null)
{
Marshal.FinalReleaseComObject(books);
books = null;
}
if (excel != null)
{
Marshal.FinalReleaseComObject(excel);
excel = null;
}
}
}
}}
終了行:
&tag(CSharp, Office連携);
*目次 [#ge93756d]
#contents
*参考情報 [#i1777c5a]
*EXCELを操作する [#y6f4767d]
-COMインターフェイスを通してEXCELを操作する場合、参照の解...
-厳密に制御するには、[[C# - COM オブジェクトの参照カウン...
-解放を自動で行うライブラリを探して使う方法もありそう([[C...
-単にxlsファイルをEXCELで開きたい場合、Process.Start()を...
-[[システム管理者さんの憂鬱 : [C#] MicrosoftOfficeのバー...
**EXCELシートに含まれるマクロを実行する例 [#c4080268]
#pre{{
public static object CreateObject(string progId, ...
{
Type t;
if (serverName == null || serverName.Length =...
t = Type.GetTypeFromProgID(progId);
else
t = Type.GetTypeFromProgID(progId, server...
if (t == null)
{
return null;
}
return Activator.CreateInstance(t);
}
public static object CreateObject(string progId)
{
return CreateObject(progId, null);
}
private static void ShowError(Exception ex)
{
string title = ex.Message;
string content = ex.Message;
if (ex.InnerException != null)
{
content = ex.InnerException.Message;
}
MessageBox.Show(content, title);
}
public static void RunMacro(string xlsPath, strin...
{
// 指定されたマクロに引数を渡して起動するメソ...
object excel = null;
object books = null;
object book = null;
try
{
// Excel操作用COMオブジェクトを生成する
excel = CreateObject("Excel.Application");
if (excel == null)
{
throw new ApplicationException("Excel...
}
//ワークブックコレクションオブジェクトを...
books = excel.GetType().InvokeMember("Wor...
//Excelファイルのオープン
book = books.GetType().InvokeMember(
"Open", BindingFlag...
books, new object[] {
xl...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
, Ty...
...
// Excelファイルの表示
excel.GetType().InvokeMember("Visible", B...
//マクロ実行(Testというサブプロシージャを...
excel.GetType().InvokeMember("Run", Bindi...
//閉じる
excel.GetType().InvokeMember("Quit", Syst...
}
catch (Exception ex)
{
ShowError(ex);
}
finally
{
if (book != null)
{
Marshal.FinalReleaseComObject(book);
book = null;
}
if (books != null)
{
Marshal.FinalReleaseComObject(books);
books = null;
}
if (excel != null)
{
Marshal.FinalReleaseComObject(excel);
excel = null;
}
}
}
}}
ページ名: