|
楼主 |
发表于 2019-9-8 17:47
|
显示全部楼层
您好,太感谢了~
为了灵活的修改格式,我用宏,逐渐写成了下面的代码。经过测试,在单一文件里面是可以的。
但是,我不知道,怎么整合到您写的第一个代码中。
一、这个是我为了修改格式写的代码
Sub 独立格式调整专用()
'独立运作成功,但是整合到源代码中失败,未能全自动
Columns("A:E").Select '选择列,范围需要根据实际情况调整
Selection.ColumnWidth = 11.63 '所有选择的列调整宽度,数值自行调整,请提前测试合适的宽度'
Rows("1:2").Select '选择前两行
With Selection '
.HorizontalAlignment = xlCenter '居中
.VerticalAlignment = xlCenter '居中
.WrapText = True '自动换行
End With '
Range("A1:E2").Select '选择区域,手动根据实际情况自行调整
Selection.Borders.LineStyle = 1 '所选区域边框线实线
End Sub
二、这个是您写的第一个代码,对我很管用。我稍作修改并加了我按自己理解的备注
Public Sub 生成文件()
Application.ScreenUpdating = False 'Excel的工作表里面数据发生变化后False禁止实时刷新
Dim arr, wb As Workbook, i As Long, mfullpath$, folderpath$ '定义了变量,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
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
三、我自己尝试的整合,各种出错,请指点,非常感谢
Public Sub 生成文件()
Application.ScreenUpdating = False 'Excel的工作表里面数据发生变化后False禁止实时刷新
Dim arr, wb As Workbook, i As Long, mfullpath$, folderpath$ '定义了变量,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").Select '选择列,范围需要根据实际情况调整
Selection.ColumnWidth = 11.63 '所有选择的列调整宽度,数值自行调整,请提前测试合适的宽度'
Rows("1:2").Select '选择前两行
With Selection '
.HorizontalAlignment = xlCenter '居中
.VerticalAlignment = xlCenter '居中
.WrapText = True '自动换行
End With '
Range("A1:E2").Select '选择区域,手动根据实际情况自行调整
Selection.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
|
|