[[20090121142804]] 『直前に開いたファイル名を取得するマクロ』(寝仔) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『直前に開いたファイル名を取得するマクロ』(寝仔)
 インプットボックスにデフォルトで、一番最近開いたファイル名を入れたいのですが
 うまくいきません。

  RFname = Application.RecentFiles(1).Name

    Fname = Application.InputBox(Prompt:="ファイル名入力", Default:=RFname, Type:=2)
    If Fname = False Then Exit Sub

 全く違うファイルが読み込まれます。エクセルの「最近使用した」と「開いた」が違う
 ようなのですが、最近「開いた」ファイル名を取得することは可能でしょうか?
 それから、ツールのオプションの全般で「最近使用したファイルの一覧」の数を動かしたら
 ファイル名にパスが表示されるようになりました。パスなしでファイル名のみを取得
 したいので、これもあわせてどうか教えて下さい。
 よろしくお願いします。


 >全く違うファイルが読み込まれます。エクセルの「最近使用した」と「開いた」が違う
 この全く違うファイルという記述が気になりますが、2番目でも、3番目でもない
 本当に文字通り違うファイル名ということですか?

 因みにVBAコードから開いたブックは、RecentFilesコレクションには登録されていませんね!!

 これも含めて、 「開いた」ファイル名を取得したいなら、アドインを使用して、RecentFileを
 自作する方法も考えれますが・・・・。

 

 >ファイル名にパスが表示されるようになりました

 これは、カレントフォルダ以外のファイルは、フルパスで表示されます。

 >パスなしでファイル名のみを取得
 これは、Fsoを使うと簡単です。

 Sub samp()
    Dim fl As RecentFile
    With CreateObject("scripting.filesystemobject")
       For Each fl In Application.RecentFiles
          MsgBox .getfilename(fl.Name)
       Next
    End With
 End Sub

 検討して見て下さい。

 ichinose


 ichinoseさま、どうもありがとうございます。頂いたsampで試してみたのですが、やはり「開いた」
 ファイルは「最近使用した」ファイルリストには含まれていませんでした。(ちなみにVBAコードからでなく
 手で(?)開いてます)これは「保存した」リストなのでしょうか・・・。あ、パスなしのファイル名は
 とてもうまくいきました。どうもありがとうございました。

 マクロ初心者なので、あまり複雑になるとわからなくなるので、もう少し検索しながら、当面は
 手入力します。。。(100件以上あるので、ちょっとしんどいですが)

 (寝仔)

 >頂いたsampで試してみたのですが
 これは、「パスなしでファイル名のみを取得」という機能しかありませんので御質問の前者についての
 解決するものではありませんからね!!

 ただ、

 >ファイルは「最近使用した」ファイルリストには含まれていませんでした。

 ということなのでちょっと気になります。再現できないので・・・。

 私の手元にあるExcelは、Excel2002ですが、開いただけで「最近使用した」ファイルリストに名前が含まれます。

 Excelのバージョンとファイルリストに含まれないようにする細かい手順等を記述してください。

 (例えば、拡張子 Xlsファイルは正常にファイルリストに含まれるが、別の拡張子だと駄目だとか・・)

 ichinose


 Excelのバージョンは2000です。ファイルリストに含まれるかどうかの手順ですが、よくわかりません。
 拡張子は全てxlc(バージョン2000)です。今リストにあるファイルは、「保存」したものと「削除」
 したものです。「開く」や「閉じる」ではファイルリストに含まれません。VBAでなく、手動(?)で
 開いてます。ただ、「ファイルリスト4」から開くと、そのファイルは「ファイルリスト1」になりました。

 どうぞよろしくお願い致します。
 (寝仔)

 Excel2000を久しぶりに使ってみました。
 >xlc(バージョン2000)です。
 xlcというファイルを初めて作ってみました(いや、初めて知りました)。
 が、現象は再現できません。ファイルリストに開いただけで登録されています。
 よって、現象が違うのでうまくいくかどうかわかりませんが、
 自作アドインでRecentFilesコレクションにアクセスするコードです。

 1 アドインファイルの作成

    新規ブックを作成してください。
    このブックのThisworkbookのモジュールに(標準モジュールではないですよ)

 '===============================================================================
 Option Explicit
 Private WithEvents app As Application
 '===============================================================================
 Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
    Dim rfl As RecentFile
    On Error Resume Next
    Set rfl = Application.RecentFiles(1)
    If Err.Number = 0 Then
       If LCase(rfl.Path) <> LCase(Wb.FullName) Then
          Application.RecentFiles.Add Wb.FullName
       End If
    End If
 End Sub
 '===============================================================================
 Private Sub Workbook_Open()
    Set app = Application
 End Sub

 次にVBEのプロジェクトエクスプローラにて、上記ブックのプロジェクトを選択して下さい。
 (以後の操作は、上記ブックのプロジェクトを選択した状態で行ってください)

 「デバッグ」----「VBAProjectのコンパイル」とクリックして、エラーがないことを確認してください。

 「ツール」----「VBAProjectのプロパティ」とクリックして、プロジェクト名を「Rflmanager」に変えて
 下さい。

 Ctrl+Sを押して、保存ダイアログを表示させてください。

 ファイルの種類として、「Microsoft Excel アドイン(*.xla)」を選択し、
 ファイル名として「rflmanager.xla」として、保存してください。

 2アドインファイルの登録

 一度、Excelを終了して再度起動してください。

 「ツール」-----「アドイン」とクリックして。アドインリストを表示させてください。

 既定フォルダに先ほどの「rflmanager.xla」を保存していれば、リストにRflmanagerが入っているはずです。
 (もし、ないようであれば、参照ボタンをクリックして、当該アドインをリストに登録してください)

 RflmanagerにチェックいれてOKをクリックしてください。

 これでアドインが登録されました。

 問題のxlcファイルを開いて、ファイルリストに登録されるか 試してみてください。

 ichinose

 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.