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

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

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

ショートカットと同様の処理をプログラムから行いたいです

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

■88664 / inTopicNo.1)  ショートカットと同様の処理をプログラムから行いたいです
  
□投稿者/ 夜叉丸 (125回)-(2018/09/18(Tue) 19:26:51)

分類:[.NET 全般] 

環境は
Windows10 VisalStudio 2010 C# .NET です。

指定したエクセルファイルの指定シートを開きたいのですが、
色々調べたところ、テキストファイルで open.vbs を作成し
以下のようなコードを記述すると、指定したエクセルファイル["D:\一覧リスト.xls"]の
シート名["作業1"]を開くことができたのですが、
これをフォーム上のボタンを押したときに実行する方法を教えてください。

力づくで、作業フォルダを作成してそこに、VBSファイルを作成して
VBSファイルを実行するという方法も考えたのですが、
そのような方法しかないのでしょうか?


Option Explicit
Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open "D:\一覧リスト.xls"
objExcel.worksheets("作業1").select
Set objExcel = Nothing

引用返信 編集キー/
■88665 / inTopicNo.2)  Re[1]: ショートカットと同様の処理をプログラムから行いたいです
□投稿者/ 魔界の仮面弁士 (1843回)-(2018/09/18(Tue) 21:12:07)
No88664 (夜叉丸 さん) に返信
> 指定したエクセルファイルの指定シートを開きたいのですが、

public static void OpenExcel(string excelFile, string sheetName = null)
{
    dynamic app = null;
    dynamic books = null;
    dynamic book = null;
    dynamic sheets = null;
    dynamic sheet = null;
    try
    {
        app = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
        app.Visible = true;
        books = app.Workbooks;
        book = books.Open(excelFile);
        if (!string.IsNullOrEmpty(sheetName))
        {
            sheets = book.Sheets;
            sheet = sheets[sheetName];
            sheet.Select();
        }
    }
    finally
    {
        Release(ref sheet);
        Release(ref sheets);
        Release(ref book);
        Release(ref books);
        Release(ref app, true);
    }
}
private static void Release<T>(ref T comObject, bool force = false) where T : class
{
    if (comObject != null)
    {
        if (Marshal.IsComObject(comObject))
        {
            if (force)
            {
                Marshal.FinalReleaseComObject(comObject);
            }
            else
            {
                Marshal.ReleaseComObject(comObject);
            }
        }
        comObject = default(T);
    }
}

引用返信 編集キー/
■88686 / inTopicNo.3)  Re[2]: ショートカットと同様の処理をプログラムから行いたいです
□投稿者/ 夜叉丸 (126回)-(2018/09/20(Thu) 08:07:05)
No88665 (魔界の仮面弁士 さん) に返信
いつもお世話になっております。
ありがとうございました。
指定のシートが開けるようになりました。
引用返信 編集キー/
■88757 / inTopicNo.4)  Re[3]: ショートカットと同様の処理をプログラムから行いたいです
□投稿者/ 夜叉丸 (127回)-(2018/09/25(Tue) 10:53:51)
すみません。
解決済みつけ忘れました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ