Board logo

標題: 請教,如何取最新的檔名? [打印本頁]

作者: tomking    時間: 2020-7-16 11:30     標題: 請教,如何取最新的檔名?

實在想不出來,,,麻煩先進指導了.

Workbooks.Open Filename:="C:\B\A123.xlsx"
  Windows("C:\B\A123.xlsx").Activate
  Range("A1:AG1000").Select
  Selection.Copy

因這個C:\B\  內之檔案,
a202007151019.xlsx  要改成 A123.xlsx  
.
.
a202007161120.xlsx  要改成 A123.xlsx  

由系統取出後,a202007161120.xlsx  之新資料,,每次都需更名 A123.xlsx   ,才可執行巨集.


不是是否可有機會,檔名變浮動,依資料夾內之最新更新的檔案a........xlsx ,開啟複製?



麻煩.
.
作者: n7822123    時間: 2020-7-16 12:12

本帖最後由 n7822123 於 2020-7-16 12:17 編輯

回復 1# tomking

最新的檔名定義是什麼?

1.檔名排序最靠後
2.最後修改時間的檔案
3.最後建立的檔案

還是讓使用者用手動方式選擇檔案吧~更彈性

新增一個副函數"GetFileFullName"即可做到


Sub 你的程式()
Workbooks.Open Filename:=GetFileFullName
Windows("C:\B\A123.xlsx").Activate
Range("A1:AG1000").Select
Selection.Copy
'...
'...
'...
End Sub

Function GetFileFullName()  As String
With Application.FileDialog(msoFileDialogFilePicker)
  .Filters.Clear                      '先清除可選檔案清單
  .Filters.Add "excel檔案", "*.xls;*.xlsx;*.xlsm"  '限定選取檔案的清單
  .InitialFileName = "C:\B"  '選取視窗最初的資料夾位置
  .AllowMultiSelect = False  '不可多選
  If .Show = 0 Then Exit Function '沒選擇就離開
  GetFileFullName = .SelectedItems(1)
End With
End Function

作者: ikboy    時間: 2020-7-16 12:18

取 c:\b\ 內取新以 a 開頭的 xlsx 檔案名。
  1. Sub zz()
  2. Dim pfn$ 'Path & file name
  3.     pfn = "c:\b\a*.xlsx"
  4.     With CreateObject("Wscript.Shell")
  5.         pfn = Split(.exec("cmd /c dir /o-d /b " & pfn).StdOut.ReadAll, vbCrLf)(0)
  6.     End With
  7. End Sub
複製代碼

作者: tomking    時間: 2020-7-16 13:19

感謝 ikboy 協助
也謝謝n7822123


感謝你們




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)