|
按照“三”的意思,给你改了一下,
- Public Sub 生成文件()
- Application.ScreenUpdating = False 'Excel的工作表里面数据发生变化后False禁止实时刷新
- Dim arr, wb As Workbook, i As Long, mFullPath$, FolderPath$
- arr = Sheet1.UsedRange.Value '用所有的可用数据给arr赋值,数组?
- FolderPath = ThisWorkbook.Path & "" '这里是生成的文件储存位置的字符串
- For i = 2 To UBound(arr) '数据(不是表头)行从第几行开始就数字就改成几。 'UBound的是数组的上界(搜索得知)
- If arr(i, 2) <> "" Then
- Set wb = Application.Workbooks.Add '和新建工作簿有关,或者新建打开工作簿?
- With wb 'with语句起到的是简化代码的作用
- With .Sheets(1) '表示活动工作簿的第一个工作表。所以需要关掉其他文件。
- For j = 1 To UBound(arr, 2)
- .Cells(1, j) = arr(1, j) '取表头
- .Cells(2, j).Value = arr(i, j) '取内容(生成文件的第二行)
- Next
- .Columns("A:E").ColumnWidth = 11.63 '所有选择的列调整宽度,数值自行调整,请提前测试合适的宽度'
- With .Rows("1:2") '选择前两行
- .HorizontalAlignment = xlCenter '居中
- .VerticalAlignment = xlCenter '居中
- .WrapText = True '自动换行
- End With '
- .Range("A1:E2").Borders.LineStyle = 1 '所选区域边框线实线
- End With
- mFullPath = FolderPath & arr(i, 6) & ".xlsx" '这里显示的是生成后文件名的构成,姓名在第几列,就把这行的数字改成几
- .SaveAs Filename:=mFullPath, FileFormat:=xlOpenXMLWorkbook, Password:=arr(i, 4), CreateBackup:=False
- '分别代表:保存文件名为XXX(其本质是一个文件夹+文件的地址信息),保存文件格式为.xlsx,密码在第几列就把数字改成几,清空后台数据。
- .Close
- End With
- End If
- Next
- Set wb = Nothing '释放内存
- Application.ScreenUpdating = True '可以刷新看结果
- End Sub
复制代码
|
|