現在開いているファイルパスを取得する – プログラミング – Home

現在開いているファイルパスを取得する
 
通知
すべてクリア

現在開いているファイルパスを取得する


めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

お世話になります。

現在開いているファイルのファイルパスを取得するにはどうしたらよいでしょうか?

過去ログを参考に

char szPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szPath);

としましたが、デスクトップにあるファイルなのに
マイドキュメントのパスが返ってきてしまいます。

どなたかご教授ください。

環境:VC6.0 Win32dll 非MFC


引用解決済
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

現在実行している exe ファイルのパスですか?
であれば、GetModuleFileName を使います。

例えばメモ帳のようなアプリを作っているとして、取得したいのが notepad.exe のパス
ではなく、開いているテキストファイルのパスだという場合は、そういう API はありま
せんので、自分で覚えておくしかありません。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

aetos様、ありがとうございました。

説明不足でした。
現在、MicrosoftOffice用のアドインを作成しています。

ファイル(例:Excel)を開いたメッセージを受け取るイベント内で
開いたExcelファイルのパスを取得したいと考えています。

>自分で覚えておくしかありません。
ぐぐったのですが、情報がなかったので、参考サイト等ありましたら
教えて頂けませんか?

宜しくお願いします。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 16年前
投稿: 4
 

ExcelのApplication::WorkbookOpenイベントでパスを取得したいと言うことでしょうか。
そうであるなら,単純に,引数として渡されたWorkbookのFullNameプロパティで取得する
のではだめなのですか。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

ありがとうございます。

>ExcelのApplication::WorkbookOpen
上記の関数はVBでしょうか?

http://support.microsoft.com/kb/230689/ja
上記サイトを参考にして、comaddin.exeのソースを修正して作成しようとしています。

ファイルパスの取得は「OnConnection」の中で行う予定です。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 16年前
投稿: 4
 

> 上記の関数はVBでしょうか?

ExcelがCOMとして提供しているものを単純に使っているだけです。
Excel VBAもCOMに対して操作しますから,Excel VBAと同じと言えば同じです。
関係しそうなのは,このあたりとか。
http://support.microsoft.com/kb/309301/en-us

> ファイルパスの取得は「OnConnection」の中で行う予定です。

OnConnectionの中で行うならば,ApplicationからWorkbooks引っ張ってきて,その中の
WorkbookについてFullNameで取得,でしょうね。


返信引用
ZCH
 ZCH
(@ZCH)
ゲスト
結合: 16年前
投稿: 25
 

だいぶ前にCOMアドイン関連を弄っていたので下記は違うかもしれませんが、

OnConnection は Excel 起動時に1回だけ呼ばれるため、
OnConnection 内のみのファイル名取得では
・エクセル単体で起動後にファイルを開く
・ファイルを開き直す
などの場合にブックの変更に対応できません。
必要なときに Workbooks から毎回引っ張ってきた方がよいです。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

ありがとうございます。
返信遅れて申し訳ありません。

Excelのファイルパスを取得方法はYuO様の提示してくださったサイトで
分かったのですが、Excel以外のOffice(word, PowerPoint)のパスを取得するには
どうしたらよいのでしょうか?

何度もすみませんが、宜しくお願い致します。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 16年前
投稿: 4
 

原則VBAなので,詳しくはWord / PowerPointのVBAのヘルプを見てください。
というか,VBAで試してからC++で実装するのがよいかと。

WordならApplication::DocumentOpenイベントで得られたDocumentオブジェクトの
FullNameプロパティの値,
PowerPointならApplication::PresentationOpenイベントで得られたPresentationオブ
ジェクトのFullNameプロパティの値です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました