2017-11-11 13 views
0

指定されたパスにファイルをダウンロードしますが、最新のファイルを開くたびに、最近のファイルの名前を指定した名前に変更する必要がありますマクロExcel VBA:最新のExcelファイルを開く方法

ファイルのパスが変更されない限り、マクロで最新のファイルを開くようにします。たとえば、my_file_fbとmy_file_fb(1)という2つのファイルがある場合、最新のファイルを開きたいとします。

+0

[FileDateTime()](https://www.techonthenet.com/excel/formulas/filedatetime.php)を使用してファイルの作成日を取得し、[Dir](https:// stackoverflow .com/a/10382861/6609896)、ワイルドカードでファイルをループします。その後、日付を比較して最新のものを見つけてください。 – Greedo

+0

コードを書くことはできますか?おそらく一例です。 – Kaleembukhari

+0

これまでに何を試しましたか?返された日付を比較するか、ファイルを開くためにどのようなコードを使用していますか? SOは実際にコード作成サービスとしてここにはないので、あなたが今まで行ってきたことを示すのが最善です。私が提案したリンクを使って何かを書こうとして、正確にあなたが立ち往生しているところを説明してください。 – Greedo

答えて

1

私のコメントを1として、この関数はトリックを行う必要があります。

Public Function MostRecentFile(ByVal searchDirectory As String, ByVal wildCard As String) As String 
    '''Returns the most recent file in searchDirectory, which matches wildCard criteria 
    Dim strFile As String      'holds the name of the file we're currently looking at 
    Dim mostRecent As Date      'holds the date of creation for the most recent file 
    Dim currDate As Date       'date of creation for the current file 
    Dim mostRecentPath As String     'path of file with most recent date 

    strFile = Dir(searchDirectory & wildCard) 'look for file in directory which matches wildcard 
    Do While Len(strFile) > 0     'loop until Dir returns empty quotes (no files) 
     currDate = FileDateTime(searchDirectory & strFile) 
     If currDate > mostRecent Then   'check whether current file is more recent than previous files 
      mostRecent = currDate    'if so, update most recent date and file 
      mostRecentPath = searchDirectory & strFile 
     End If 
     strFile = Dir       'move to next file in directory 
    Loop 

    If mostRecent = 0 Then      'check whether any files were returned 
     MostRecentFile = "No files match '" & searchDirectory & wildCard & "'" 
    Else 
     MostRecentFile = mostRecentPath 
    End If 
End Function 

これが第二のために検索するファイルの種類を指定し、入力文字列searchDirectorywildCard、で見てフォルダを最初に指定を取り。

MostRecentFile("C:/Users/[USERNAME]/Downloads/", "*.xls") 

String

としてフォルダあなたのダウンロードで".xlsm",".xls",".xlsx"(Excelファイル)から最新のファイルへのパスを返します。私はそううまくいけば、あなたが各ステップは

をやっていることを学ぶことができるコードのコメントを追加しました
+0

ありがとう。私はそれを試してみましょう。 ところで、私はDir関数を使ってみました。コードはエラーなしで実行されますが、msgボックスにファイル名は返されません。ここに構文があります。 excel_file = Dir( "Macintosh HD:ユーザー:kaleembukhari:Documents"、MacID( "Sting.xls:")) – Kaleembukhari

+0

@Kaleembukhariああ、このアプローチはmacでは機能しません。マック。あなたはマックの答えのためにサイトを検索する必要があります。 [このワークブック](https://www.rondebruin.nl/mac/mac013.htm)が役に立ちます。しかし、あなたの質問には、[excel-vba-mac](https://stackoverflow.com/questions/tagged/excel-vba-mac)タグ(またはこれに相当するもの)を常に使用する必要があります。これは多くの回答の重要な情報です – Greedo

関連する問題