我从 MS Project 中运行一些 VBA,根据保存的地图导出 Excel 工作表,然后打开它进行整理和格式化。第一次通过时工作正常,第二次尝试时,当它到达“With XLWorksheet > Range ("C:C")....”时,我收到错误 462。
之前的错误是1004,但我添加了一个例程来在最后终止所有Excel进程。
如果我在出错时停止代码并手动关闭工作簿和 Excel,它将再次运行而不会出现错误。
阅读之前的一些帖子,我想我已经做了一些不合格的引用,这些引用创建了无法被杀死或不存在的隐式引用,但我是一个完全的新手,所以我正在努力看看是否是这种情况。
我使用桌面来存储文件只是因为我还没有信心在 Sharepoint 中使用。
以下代码
Dim XLApp As Excel.Application
Dim XLwbook As Excel.Workbook
Dim XLWorksheet As Excel.Worksheet
Dim strInputFileName As String
strInputFileName = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Costs Export " & Format(Date, "ddmmyy") & "_" & Format(Time, "hhnnss") & ".xlsx"
FileSaveAs Name:="" & strInputFileName & "", FormatID:="MSProject.ACE", Map:="Costs by date"
Set XLApp = CreateObject("Excel.application")
Set XLwbook = XLApp.Workbooks.Open(strInputFileName)
Set XLWorksheet = XLwbook.Worksheets(1)
XLApp.Visible = True
With XLWorksheet
'Convert and format export data
Range("C:C").TextToColumns **'< ERRORS HERE ON SECOND RUN**
Range("D:D").TextToColumns
Range("E:E").TextToColumns
Range("F:F").TextToColumns
Range("G:G").TextToColumns
Range("C:C").NumberFormat = "dd/mm/yy"
'Sort
Range("A1", Range("G1").End(xlDown)).Sort key1:=Range("C1"), order1:=xlAscending, Header:=xlYes
'Add Dev and Tool columns
Range("D1").EntireColumn.Insert
Range("D:D").NumberFormat = "#,###"
Range("D1").Value = "Dev Cost"
'Extract budget or actual figures
Range("D2", Range("D2").End(xlDown)).Formula = "=IF(H2=999, 0,IF(H2>0, H2, F2))"
'Insert row and add totals
Cells(Rows.Count, "A").End(xlUp).EntireRow.Delete
Range("A1").EntireRow.Insert
Range("D1").Value = WorksheetFunction.Sum(.Range("D:D"))
Columns("A:I").AutoFit
End With
XLwbook.Close (True)
Set XLWorksheet = Nothing
Set XLwbook = Nothing
XLApp.Quit
Set XLApp = Nothing
'Kill all Excel processes
FindAndTerminate
End Sub
输入“。”在 With 内所有行的开头部分。就像下面这样。 :)
With XLWorksheet
'Convert and format export data
.Range("C:C").TextToColumns **'< ERRORS HERE ON SECOND RUN**
.Range("D:D").TextToColumns
.Range("E:E").TextToColumns
....