我无法复制你的错误,但这里有一些提示。
您不应该使用括号调用sub,并且尝试将其保存为不同的文件格式:
objWorkbook.SaveAs("C:\test.xls")
.
此处仅复制最后一个复制范围:
objWorkbook.Sheets(1).Range("D8").EntireColumn.Copy
objWorkbook.Sheets(1).Range("A8").EntireColumn.Copy
objWorkbook.Sheets(1).Range("F8").EntireColumn.Copy
更好的方法是使用
Columns
和
.Copy Destination
objWorkbook.Sheets(1).Columns("D").Copy sheet.Columns("A")
Const WorkingDir = "C:\"
Const xlCSVMSDOS = 24
Dim fso, SaveName, myFile
Dim objExcel, objWorkbook, wsSource, wsTarget
myFile = "test.xlsx"
SaveName =WorkingDir & "test.csv"
With CreateObject("Scripting.FilesystemObject")
If Not .FileExists(WorkingDir & myFile) Then
MsgBox "File not found:" & vbCrLf & WorkingDir & myFile, vbInformation, "Script Cancelled"
WScript.Quit
End If
End With
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open(WorkingDir & myFile)
Set wsSource = objWorkbook.Sheets(1)
set wsTarget = objWorkbook.Sheets.Add()
wsSource.Columns("D").Copy wsTarget.Columns("A")
wsSource.Columns("A").Copy wsTarget.Columns("B")
wsSource.Columns("F").Copy wsTarget.Columns("C")
objWorkbook.SaveAs SaveName, xlCSVMSDOS
objWorkbook.Close False
以下是如何从特定行开始的列中复制数据。
Const xlUp = -4162
With wsSource
.Range("D87", .Range("D" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("A1")
.Range("A87", .Range("A" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("B1")
.Range("F87", .Range("F" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("C1")
End With