Visual Studio 2015 - Die Manipulation Von Excel?
Habe ich 750 Excel-Dateien, die ich will
- sauber durch löschen von Spalten von Daten, die eine Bezeichnung mit einem Sternchen,
- dann nehmen Sie einige der Daten und setzen Sie es in eine neue Arbeitsmappe, Arbeitsblatt, und andere Daten, die in der gleichen Arbeitsmappe, Arbeitsblatt, und einige andere Daten in eine zweite neue Arbeitsmappe.
Erstellte ich ein WPF-Projekt in Visual Studio 2015 mit einem kleinen dialog-box mit 2 radio-buttons für
- saubere Daten,
- erzeugen neuer Dateien.
Dies ist mein VB-code:
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
Ich bekomme 3 Fehler, aber kann nicht herausfinden, wie Sie zu lösen.
a) Arbeitsblätter ist nicht Mitglied in der Anwendung [Zeile 19]
b) Arbeitsblätter ist nicht Mitglied in der Anwendung [Zeile 20]
c) 'xlOpenXMLWorkbook' ist nicht deklariert. Es kann nicht mehr zugegriffen werden aufgrund seiner Schutzstufe.
Ich benutze beide VB.Net und VBA. VB.Net hat eine fülle von Funktionen, einschließlich Zugriff auf Arbeitsmappen gespeichert unter jeder Excel-version, und die resultierende ausführbare Dateien kann hundert mal schneller als eine VBA-makro. Ich halte VB.Net die bessere Sprache, und ich benutze es mehr als VBA. Jedoch ist der Zugriff auf Arbeitsmappen aus VB.Net langsam ist. Wenn das einzige Ziel des Programms ist die Bearbeitung von Arbeitsmappen, ich würde mit VBA.
InformationsquelleAutor Tom Chambers | 2015-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für a) und b) das Muster ist :
C), einfachste Ausweg :
Ergebnis :
Const xlOpenXMLWorkbook = 51 (&H33)
So, nur ersetzt es durch den Wert 51!
Hier dein geänderter code :
So
ActiveWorkbook
wahrscheinlich nicht in Visual Studio, so dass ich Hinzugefügt eine Schleife aufWorkbooks
zu vermeiden, es zu benutzen, das einzige Problem ist, dass dies wahrscheinlich Scannen Sie alle geöffneten Arbeitsmappen, können Sie einen test auf den Namen oder etwas, wenn Sie möchten!InformationsquelleAutor R3uK
Verweisen auf ein Arbeitsblatt yau kann entweder
ws = wb.Worksheets(1)
oderws = wb.Worksheets("Sheet1")
oderws = excelApp.ActiveWorkbook.Worksheets(1)
und zu verwendenxlOpenXMLWorkbook
verwenden, wird der name der zugehörigen Enum -XlFileFormat
:XlFileFormat.xlOpenXMLWorkbook
.Diesem vereinfachten Beispiel wird die Arbeitsmappe geöffnet Test.xlsx, schreibt text in die Zelle A1 und speichert es in einen neuen Ordner.
Hinweis: Verweis hinzufügen, um MS Office-Interop für Ihre version von Excel(hier Beispiel für Excel 2007).
Ich weiß nicht, was das problem ist. Aber siehe die Antwort bearbeitet, Hinzugefügt haben, ein Bild, wie das Excel-Interop-dll-Verweis sieht aus wie in meinem Beispiel-Projekt. HTH
Wahrscheinlich die Anwendung, geben Sie Ihren code nicht in Excel-Anwendung? Versuchen, satt zu qualifizierten Namen schreiben
Microsoft.Office.Interop.Excel.Application
.Danke Dee. Dass es gelöst 🙂
Sie sind willkommen, ich bin froh, dass es geholfen hat! Wenn Sie, wie die Antwort, Sie können es akzeptieren.
InformationsquelleAutor dee