【发布时间】:2015-07-22 07:34:53
【问题描述】:
我有 750 个 Excel 文件想要处理
- 通过删除标题带有星号的数据列进行清理,
- 然后获取其中一些数据并将其放入新的工作簿工作表中,将其他数据放入同一个工作簿工作表中,并将其他一些数据放入第二个新工作簿中。
我在 Visual Studio 2015 中创建了一个 WPF 项目,其中包含一个带有 2 个单选按钮的小对话框
- 干净的数据,
- 生成新文件。
这是我的 VB 代码:
Class MainWindow
Dim wb As Microsoft.Office.Interop.Excel._Workbook
Dim ws As Microsoft.Office.Interop.Excel._Worksheet
Dim iCol As Integer
Dim strName As String
Dim iIndex As Integer
Dim strPath As String
Dim strFile As String
Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
If cleanRadioButton.IsChecked = True Then
strPath = "c:\test\old\"
strFile = Dir(strPath & "*.csv")
Do While strFile <> ""
wb = wb.Open(Filename:=strPath & strFile)
'Loop through the sheets.
For iIndex = 1 To Application.Worksheets.Count
ws = Application.Worksheets(iIndex)
'Loop through the columns.
For iCol = 1 To ws.UsedRange.Columns.Count
'Check row 1 of this column for the char of *
If InStr(ws.Cells(10, iCol).Value, "*") > 0 Then
'We have found a column with the char of *
ws.Columns(iCol).EntireColumn.Delete
ws.Columns(iCol + 1).EntireColumn.Delete
ws.Columns(iCol + 2).EntireColumn.Delete
End If
Next iCol
Next iIndex
wb.SaveAs(Filename:="C:\test\new\" & wb.Name, FileFormat:=xlOpenXMLWorkbook)
wb.Close(SaveChanges:=False)
strFile = Dir()
Loop
MessageBox.Show("The csv files have now been cleaned. Congrats.")
Else inputRadioButton.IsChecked = True
MessageBox.Show("The data has now been split into Trajectory and ForcePlate input files. High 5.")
End If
End Sub
End Class
我遇到 3 个错误,但不知道如何解决它们。
a) Worksheets 不是 Application [第 19 行] 的成员
b) Worksheets 不是 Application [line 20] 的成员
c) 'xlOpenXMLWorkbook' 未声明。由于其保护级别,它可能无法访问。
【问题讨论】:
-
我同时使用 VB.Net 和 VBA。 VB.Net 具有丰富的功能,包括访问保存在任何版本的 Excel 下的工作簿,生成的可执行文件可以比 VBA 宏快一百倍。我认为 VB.Net 是更好的语言,我使用它比 VBA 更多。但是,从 VB.Net 访问工作簿很慢。如果程序的唯一目标是操作工作簿,我会使用 VBA。
标签: vb.net excel visual-studio-2015