|
GPT回复可以对该段代码进行如下优化和修改。
顺序问题:修改代码如下,添加一个遍历数组元素前的排序:
x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _
Title:="Excel选择", MultiSelect:=True)
If Not IsArray(x) Then Exit Sub
x = SortArr(x)
'定义一个子函数SortArr,用于将文件名按照从小到大的顺序排序
Function SortArr(ByRef arr() As Variant) As Variant()
Dim i As Long, j As Long, temp As Variant
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) > arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
SortArr = arr
End Function
表头只留1行:将第一行及以下的内容清空,并且只保留第一行即可。修改代码如下:
Set ts = t.Sheets(3)
ts.Cells.ClearContents
ts.Range("A1").Value = "日期"
l = ts.Range("A1").Column
希望将原表头的月移到列:在打开工作簿后,可以先把原来的表头放置到新的位置,然后删除第一行的代码即可。具体代码修改如下:
Set w = Workbooks.Open(x1)
Set wsh = w.Sheets(1)
h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Row
wsh.Range("A1", wsh.Cells(1, l)).Copy ts.Cells(1, 2)
wsh.UsedRange.Offset(1, 0).Copy ts.Cells(h + 1, 1)
w.Close[/code] |
|