[[20130423144441]] 『VBAでファイルオープン』(KISS) ページの最後に飛ぶ

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

 

『VBAでファイルオープン』(KISS)Ver2003XP

いつもお世話になっております
下記コードでファイルオープンすることは解ったのですが

 OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

随時ファイルが増えまして 最新のファイルを開けたいのですが

ご教授お願いします

ファイル名の特徴は下記のようになっております

log088_1304230627.csv

ファイルナンバー(log088_)日付(130423)データー数(0627).csv

ファイルナンバーの一番大きい数若しくは日付が最新のファイルを開けたいのですが
どの様に指定すればいいのでしょうか

お手数と思いますが 宜しくお願いします


 >若しくは

 どちらが優先?

 それと(わかっているんだとはおもうけど)Application.GetOpenFilename でファイルはオープンできないよね。
 あくまで、ここで選択されたもののパスを使って自分で開く。

 追記で

 ファイルナンバーはファイル名のなかのものを比較するんだろうけど、
 日付は?はりファイル名の中のもの?それとも、本当の作成日とか更新日?

 それと、logなんとか_なんとか という構成はきまっている?
 それとも、頭が log ではないものもある?
 これらが入ったフォルダは決まっている?決まっていない?

 (ぶらっと)

ぷらっとさん

早速のお返事有難うございます

例に挙げたコード使ってませんでした

どっちも同じ条件で増えていきます

どちらでも構いません

ファイルナンバー大きいもの=最新日時

上記の様になっております

下記のコードよく 利用しています

 Function IsFileOpen(myFileName As String) As Boolean
   On Error Resume Next
   IsFileOpen = Workbooks(myFileName).Name = myFileName
 End Function

Private Sub CommandButton10_Click()

 If Not IsFileOpen("PLAN.xls") Then Workbooks.Open (ThisWorkbook.Path & "\PLAN.xls")

   Workbooks("MAIN.xls").Close False
End Sub


ぷらっとさん

早速のお返事有難うございます

必ず logは頭に入ります 
ファイル名で構成は決まっています

log086_1304190643.cvs
log087_1304220621.cvs
log088_1304230627.cvs

上記のように増えていきます

宜しくお願いします


返答追記

ファイルフォルダーは決まっています

返答が曖昧で申し訳ございません


 それでは以下で試してみて。フォルダパスは実際のものに変更してね。

 Sub Sample()
    Dim myPath As String
    Dim maxNum As Long
    Dim maxFile As String
    Dim fName As String
    Dim d As Variant
    Dim n As Long

    myPath = "c:\TEST\"     'フォルダパスは実際のものに。

    fName = Dir(myPath & "log*.csv")

    Do While Len(fName) > 0
        d = Split(fName, "_")
        If UBound(d) = 1 Then
            If IsNumeric(Mid(d(0), 4)) And IsNumeric(Left(d(1), 6)) Then
                n = Mid(d(0), 4)
                If n > maxNum Then
                    maxNum = n
                    maxFile = myPath & fName
                End If
            End If
        End If
        fName = Dir()
    Loop

    If Len(maxFile) = 0 Then
        MsgBox "対象ファイルがありません"
    Else
        MsgBox "対象ファイルは " & maxFile
        '↑ MsgBox はサンプル確認用。実際には、ここでmaxFile を開く
    End If

 End Sub

 (ぶらっと)

ぷらっとさん
早速のお返事有難うございます

追記質問ですが
MsgBoxに」ファイル名は出てくるのですが

なぜ開かないのでしょうか

再度ご教授御願いします


 >なぜ開かないのでしょうか 

 だから、コード内にも書いたけど、サンプル確認用としてメッセージをだしているだけで
 ファイルを開くコードは書いていない。
 コード内に書いたように、自分で『maxFile』を開くコードを、ここに記述してね。
 (そのコードはわかるよね?わからなければ、実際に何かcsvファイルを開く操作をマクロ記録すれば
  基本的なコードは生成されるので、それを使って、まずは がんばってみよう)

 (ぶらっと)

ぷらっとさん

よく読んでませんでした

了解しました いろいろ有難うございました


ぷらっとさん

お蔭様で出来るように成りました

本当に助かりました

今回でこのミッションから開放されるので

とりあえずほっとしています

また 機会が有りましたら宜しくお願いいたします


コメント返信:

[ 一覧(最新更新順) ]


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