我正在從VBA Excel中的目錄中讀取文件。 閱讀後,我正在寫入單元格中的文件。 問題是以文件名升序搜索目錄。但我需要在部分文本(號碼的文件名內)在VBA中,如何通過文本值排序在dir中找到文件
的爲了打印對於離:
image_100
image_120
image_1205
image_123
我需要溶液打印像
image_100
image_120
image_123
image_1205
[上升按照最後的值) 任何幫助朋友?
謝謝, kamal。
我正在從VBA Excel中的目錄中讀取文件。 閱讀後,我正在寫入單元格中的文件。 問題是以文件名升序搜索目錄。但我需要在部分文本(號碼的文件名內)在VBA中,如何通過文本值排序在dir中找到文件
的爲了打印對於離:
image_100
image_120
image_1205
image_123
我需要溶液打印像
image_100
image_120
image_123
image_1205
[上升按照最後的值) 任何幫助朋友?
謝謝, kamal。
實現這一目標將是把那種值到另一列的一種方式(我假定文件名是在A列,本例中使用B列的排序字段)
Public Sub ReOrderFiles()
Columns("B:B").Clear
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Sheet1")
Dim LastRow As Long
LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
Dim dr As Range
Set dr = Range("A1:A" & LastRow)
dr.Select
Dim target As Range
Dim c As Range
For Each c In dr.Cells
Set target = Range("B" & c.Row)
target.Select
If Len(c.Value2) > 0 Then
Selection.Value = "Sort" & onlyEndDigits(c.Value2)
End If
Next
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A:B")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("B:B").Clear
End Sub
的在最終得到的數字功能可以
Function onlyEndDigits(s As String) As String
Dim retval As String
Dim Start As Integer
retval = ""
Start = 1
Dim i As Integer
For i = Len(s) To 1 Step -1
If Mid$(s, i, 1) >= "0" And Mid$(s, i, 1) <= "9" Then
Start = i
Else
Exit For
End If
Next
For i = Start To Len(s)
retval = retval + Mid(s, i, 1)
Next
onlyEndDigits = retval
End Function
注意這個函數會忽略的是,在其他地方的文件名出現任何數字
您是否嘗試過收集所有日。 e文件名首先到數組中然後自定義排序數組然後處理它們? – Jeeped