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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94081 の関連記事表示

<< 0 >>
■94081  Re[18]: VBより今開いてるExcelのファイル名の取得
□投稿者/ 魔界の仮面弁士 -(2020/03/11(Wed) 17:06:58)
    2020/03/11(Wed) 17:08:56 編集(投稿者)

    No94079 (さき さん) に返信
    > ファイル名のみを抽出、

    フルパスからファイル名のみを抽出するには、そのパスを
    System.IO.Path.GetFileNameWithoutExtension メソッドあるいは
    System.IO.Path.GetFileName メソッドに渡してやれば OK です。


    Excel で開いていたファイルが OneDrive 上にあった場合、先のコードにて
    https://d.docs.live.net/〜〜/Example.xlsx』などの文字列が
    列挙される可能性がありますが、この場合においても、
    得られたパスを上記メソッドに引き渡すことで、
    『Example』や『Example.xlsx』といったファイル名を得られます。


    > その内容を別途読み込みもし活用もしたかったのです。

    CSV ファイル等のテキストファイルであれば、
    Excel 本体が無くても読み込めますが、
    Excel のワークブック ファイルの内容を読み取ろうとするのであれば、
    Excel 本体(あるいは同種のライブラリ)を使う必要があるでしょう。


    各セルの値を読みだす方法はいろいろあります。本スレッドの質問内容である
    『VBより今開いてるExcelのファイル名の取得』から外れてしまうことになるので、
    具体的なソースコードの記述は避けますが、たとえば Excel を使ってアクセスするなら、
    Worksheet オブジェクトの Range プロパティや Cells プロパティを通じて読みだせます。

    ClosedXML ライブラリを使うなら、IXLWorksheet の Cells プロパティを使えます。
    EPPlus ライブラリを使う場合は、ExcelWorksheet の Cells プロパティを使えます。
    あるいは ReoGrid のメモリワークブックを通じて読み取ることもできますね。
    https://reogrid.net/jp/document/


    > 開いてるExcelをVBから閉じたいとは、上で抽出もしたそのExcelのことなのです。

    一つの Excel 上で、複数のファイルが開かれていた場合において、
    No94073 の (1)〜(6) のうち、どの動作を望んでいるのでしょうか?


    > 閉じもせず読み込みもしょうとすれば、「System.IO.IOException 別のプロセスで使用されているため・・」とのエラーにもなるからです。

    現在どういう処理を行っているのか分からないので、その点については何とも言えません。

    たとえば Excel で開かれている最中のファイルに対して
      Using stm As New FileStream(excelFilePath, FileMode.Open)
       ' :
       ' :
      End Using
    で読み込もうとした場合は、御指摘のものと同様の
    『System.IO.IOException: '別のプロセスで使用されているため、…'』の例外になると思います。

    しかし、Excel で開いている最中のファイルだったとしても、FileShare.ReadWrite を指定して
      Using stm As New FileStream(excelFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
       ' :
       ' :
      End Using
    などとした場合は、System.IO.IOException の例外にはなりませんでした。
    https://dobon.net/vb/dotnet/file/fileshare.html#section4
記事No.94040 のレス /過去ログ163より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -