1 群里有人求助的问题1
- 有大神回答了,代码很简洁
- 但是可能没注意到,这个求助的是需求把一个sheet单独导出为csv
2 方法1:单独把一个sheet另存为csv
- 方法1的思路:
- 先copy一个sheet,EXCEL会自动生成一个新的activeworkbook
- 保存这个新的wb就行了
Sub 导出csv()
Dim str1 As String
Dim sh1, sh2 As Worksheet
Dim path1
path1 = "C:\Users\Administrator\Desktop"
str1 = InputBox("请输入您要导出的sheet名")
For Each sh1 In ThisWorkbook.Worksheets
If sh1.Name = str1 Then
sh1.Copy
ActiveWorkbook.SaveAs path1 & "\" & sh1.Name & ".csv"
ActiveWorkbook.Close
Exit Sub
Else
MsgBox ("没有这个sheet或您输入的sheet名不对,请您修改后重试")
End If
Next
End Sub
3 直接保存工作簿的语法(EXCEL正常只能整体保存workbook,不能单独保存worksheet)
3.1 workbooks().saveas
- 简洁的代码如这个:
- ActiveWorkbook.SaveAs Filename:="C:\A\" & 文件名 ".csv", FileFormat:=xlCSV
3.2 worksheets().saveas 和wb.saveas没区别
- 除了使用workbooks().saveas
- 居然也可以使用 worksheets().saveas,并且功能和wb.saveas一致,每个工作表和其改动都会保存。
- thisworkbook.SaveAs path1 & "\" & sh1.Name & ".csv"
- sh1.SaveAs path1 & "\" & sh1.Name & ".csv"
Sub 导出csv2()
Dim str1 As String
Dim sh1, sh2 As Worksheet
Dim path1
path1 = "C:\Users\Administrator\Desktop"
str1 = InputBox("请输入您要导出的sheet名")
For Each sh1 In ThisWorkbook.Worksheets
If sh1.Name = str1 Then
sh1.SaveAs path1 & "\" & sh1.Name & ".csv"
' thisworkbook.SaveAs path1 & "\" & sh1.Name & ".csv" '实测这2种写法都会全部保存wb
Exit Sub
Else
MsgBox ("没有这个sheet或您输入的sheet名不对,请您修改后重试")
End If
Next
4 扩展问题:有时候试试,多个sheet 这样是否OK
Sub 导出csv1()
Dim sh1 As Worksheet
Dim path1
path1 = "C:\Users\Administrator\Desktop"
For Each sh1 In ThisWorkbook.Worksheets
sh1.Copy
ActiveWorkbook.SaveAs path1 & "\" & sh1.Name & ".xlsx"
'ActiveWorkbook.SaveAs path1 & "\" & ThisWorkbook.Name & "-" & sh1.Name & ".xlsx"
ActiveWorkbook.Close
Next
End Sub
5 有其他方法单独保存一个worksheet吗?