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

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

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

VBより今開いてるExcelのファイル名の取得 [1]

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

■94081 / inTopicNo.21)  Re[18]: VBより今開いてるExcelのファイル名の取得
  
□投稿者/ 魔界の仮面弁士 (2605回)-(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
引用返信 編集キー/
■94083 / inTopicNo.22)  Re[19]: VBより今開いてるExcelのファイル名の取得
□投稿者/ さき (22回)-(2020/03/11(Wed) 18:00:24)
No94081 (魔界の仮面弁士 さん) に返信

ありがとうございます。

そのような形でのファイル名のみの抽出もあるのですね。
一段落すれば試してみます。

今のところ取り敢えず、ファイル名のみの抽出もしたExcelを閉じれば良いのです。
原則その一個しか開きませんし、ハンドで閉じても良いことではありますが。

引用返信 編集キー/
■94084 / inTopicNo.23)  Re[20]: VBより今開いてるExcelのファイル名の取得
□投稿者/ 魔界の仮面弁士 (2606回)-(2020/03/11(Wed) 18:21:57)
No94083 (さき さん) に返信
> 今のところ取り敢えず、ファイル名のみの抽出もしたExcelを閉じれば良いのです。
> 原則その一個しか開きませんし、ハンドで閉じても良いことではありますが。

これ以上サンプルを書くと、質問というよりも作成代行みたいに
なってしまうので、コードの提示は差し控えますが…

技術的なところは既に示していますので、先のコードを書き換えて、
「開いているファイル名を返し、ついでに Excel も閉じる」ようにすれば
要件を満たせるかと思います。

引用返信 編集キー/
■94086 / inTopicNo.24)  Re[21]: VBより今開いてるExcelのファイル名の取得
□投稿者/ さき (23回)-(2020/03/11(Wed) 19:17:50)
No94084 (魔界の仮面弁士 さん) に返信

> 「開いているファイル名を返し、ついでに Excel も閉じる」ようにすれば

ありがとうございます。
閉じるコマンドのみでも教えては頂けないでしょうか。


引用返信 編集キー/
■94087 / inTopicNo.25)  Re[22]: VBより今開いてるExcelのファイル名の取得
□投稿者/ 魔界の仮面弁士 (2608回)-(2020/03/12(Thu) 09:52:37)
No94086 (さき さん) に返信
>>「開いているファイル名を返し、ついでに Excel も閉じる」ようにすれば
> 閉じるコマンドのみでも教えては頂けないでしょうか。

えぇと…?

「ブックを閉じるメソッド」、「Excel 本体を閉じるメソッド」の両方とも
既に紹介済みですし、メソッド名だけでなく、その引数仕様の書かれた資料も提示しましたし、
実際にそれらが使われているサンプルも複数提示していますよね。


さきさんの投稿を私が理解しきれていないにせよ、私の回答をさきさんが読み解けていないにせよ、
いまひとつ会話のキャッチボールが成立していないように感じています。


Python は超初心者らしいですし(No94029)、VB の知識量や、Excel オブジェクトに関する知識が
不足しているなら、先の一連の回答では理解しきれていない点が多々あるのではないかと懸念しています。
(外部アプリの制御なので入門者レベルだと辛いでしょうが、初〜中級レベルの知識があるなら何とかなるでしょう)


まずは「何が分からないのか」あるいは「何がどううまくいかないのか」を『具体的』に提示してください。

回答文あるいは紹介した URL の中で、不明な用語や理解できない点があるのならば、
どの部分が分からないのかを示してください。必要であれば説明します。

こちらで提示したサンプルを動作させることができなかったのであれば、どういう状態になっているのかを
書いてください。結果をフィードバックして頂ければ、訂正版や改良版を提示できるかもしれません。

サンプルを試そうとしてコンパイルエラーになるのなら、どの行が何というエラーに
なっているのかを、今度こそ正確に書き写してください。エラー内容は重大な手掛かりになりえますので。

コンパイルはできたけれども、実際に動かしたらエラーになってしまうようであれば、
どういう操作をしてどの行が何というエラーになるのかを提示してください。状況説明が大事。

サンプルは動いたけれど自分の要件に合わないというのなら(期待する閉じ方ではなかったなど)、
どういう動作を期待していたのに、実際にはどうなってしまうのかを具体例と共に挙げてください。

サンプルの各行で、意図の読み取れない記述が残っているのなら、
ステートメントやメソッドの意味をリファレンス等で調査してください。
その上で不明点が残るなら、どの行がまだ理解できていないのかを
ピンポイントで逆質問してください。

サンプルを読み解くことはできても、それを実際の自分のコードに組み込もうとすると
行き詰ってしまうのなら、どの部分で詰まっているのかを明確にするため、
現在書いているコードを提示した上で、悩んでいる箇所を示してください。



それと…当初の質問タイトルから、そろそろ離れてきてしまいましたし、
20投稿を超えて複数ページに分かれてしまったので、要件にあったタイトルを
付けなおして、別の質問スレッドを立てなおすことをお奨めします。
(問題無いと思うなら、このまま同じスレッドで続けて頂いても OK です)
引用返信 編集キー/
■94088 / inTopicNo.26)  Re[14]: VBより今開いてるExcelのファイル名の取得
□投稿者/ kaina (62回)-(2020/03/12(Thu) 10:05:14)
横から失礼します。
ネットで「VB.net Excel 操作」で検索すればVB.netで一通りのExcel操作を
行う方法を解説してあるサイトは大量に出てきます。
1から10まで手取り足取り教えて貰うスタンスではなく、
自助努力をするようにしてはいかがでしょうか?

引用返信 編集キー/
■94089 / inTopicNo.27)  Re[15]: VBより今開いてるExcelのファイル名の取得
□投稿者/ さき (24回)-(2020/03/12(Thu) 10:31:04)
No94088 (kaina さん) に返信

一応は調べて質問はしてる積りです。
でも足りなかったのでしょう。

引用返信 編集キー/
■94090 / inTopicNo.28)  Re[23]: VBより今開いてるExcelのファイル名の取得
□投稿者/ さき (25回)-(2020/03/12(Thu) 10:37:31)
No94087 (魔界の仮面弁士 さん) に返信

大変お手数もお掛けもしてしまい申し訳ありません。
かなりの低レベルなこと、改めての自覚もしました。
もう一度出直します。
ありがとうございました。



解決済み
引用返信 編集キー/

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

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ