VSTO C# Excelアドインでアクティブブックのファイルパス・フォルダパスを取得する方法

C#

VSTOはVisual Studio Tools for Office の略で、officeのアドインやマクロ付きドキュメントを、VB.netやc#などで記述できるフレームワークです。Visual Studioで開発することができ、VBAとオサラバできるMS公式フレームワークです。

この記事では、c#で、Excelブックのファイルパス、ファイル名、フォルダパスを取得する方法を紹介します。

この記事で取得するもの

この記事では、ローカルドライブに保存されたExcelブックのファイル名、ファイルフルパス、フォルダパスを取得するコードを紹介します。

例えば、C:\Users\Administrator\Documents\Book1.xlsx というファイルがあった場合、

  • ファイルフルパス:C:\Users\Administrator\Documents\Book1.xlsx
  • ファイル名:Book1.xlsx
  • フォルダパス:C:\Users\Administrator\Documents

このようになります。

アクティブワークブックのフルパスを取得するコード

アクティブワークブックのフルパスを取得するには、FullNameプロパティを使用します。

public static string GetFullName()
{
    string fullName = Globals.ThisAddIn.Application.ActiveWorkbook.FullName;
    return fullName;
}

このコードを使ってファイルフルパスを取得するには以下のようにコードを記述します。

string fullName = "";
fullName = ThisAddIn.GetFullName();

フルパスからファイル名のみ抽出する

フルパスからファイル名を抽出するには、System.IO.Path.GetFileNameメソッドを使用します。ここではVSTOのフレームワークは使用せず一般的なc#プログラミングになります。

string fullName = "";
string fileName = "";

fullName = ThisAddIn.GetFullName();
fileName = System.IO.Path.GetFileName(fullName);

フルパスからフォルダパスを抽出する

フルパスからフォルダパスを抽出するには、同様にc#のメソッドであるGetDirectoryNameを使用します。先ほどのファイルフルパスを引数に渡すことで、フォルダパス部分のみを抽出することができます。

string fullName = "";
string folderPath = "";

fullName = ThisAddIn.GetFullName();
folderPath = System.IO.Path.GetDirectoryName(fullName);

ソースコード全文

ソースコード全文は以下のgithubリポジトリに格納しています。

コンパイルすれば動作しますので、Visual Studioをお持ちの方は遊んでみてください。

https://github.com/harus0313/cliesx


コメント

タイトルとURLをコピーしました