Hallo,
gleich vorne weg, ich bin kein Programmierer.
Ich hoffe aber, das ihr mir vielleicht trotzdem weiterhelfen könnt!?
Ich bekomme mehrere Excel-Listen pro Woche, welche relativ groß sind mit 20-40 Spalten.
Von diesen Spalten sind aber nur 10 Stück für mich relevant und es ist sehr mühsam die restlichen Spalten immer von Hand zu löschen, da die wichtigen Spalten manchmal am Anfang und manchmal mittendrin sind.
Die Überschriften der Spalten sind in der Zeile 2 oder 3 und sind aber bei allen Listen gleich bezeichnet.
Nun hatte ich mir überlegt über ein kleines Programm, welches ich mit Visual-Studio in VB.Net erstelle, die unnötigen Spalten automatisch löschen zu lassen, in dem das Programm nach den Überschriften/Bezeichnungen sucht.
Nach intensiver Suche bin ich auch schon auf einen gut Ansatz für mich gestoßen, aber leider wird mir die Zeile 25+27 falsch angegeben.
Zusätzlich hatte die Datei Verknüpfung gefehlt, diese habe ich in Zeile 9-11 angepasst - ich hoffe das ist so richtig!?
Wenn ich "Option Strict On" rausnehme, habe ich zwar keine Fehler mehr, aber das Programm macht dann trotzdem nicht was es soll und die Excel-Datei wird gesperrt, da sie dann in Verwendung ist und ich Excel dann per Taskmanager schließen muss.
Könnt ihr mir bitte helfen mit dem Code?
Hier ist mein aktueller Code :
gleich vorne weg, ich bin kein Programmierer.
Ich hoffe aber, das ihr mir vielleicht trotzdem weiterhelfen könnt!?
Ich bekomme mehrere Excel-Listen pro Woche, welche relativ groß sind mit 20-40 Spalten.
Von diesen Spalten sind aber nur 10 Stück für mich relevant und es ist sehr mühsam die restlichen Spalten immer von Hand zu löschen, da die wichtigen Spalten manchmal am Anfang und manchmal mittendrin sind.
Die Überschriften der Spalten sind in der Zeile 2 oder 3 und sind aber bei allen Listen gleich bezeichnet.
Nun hatte ich mir überlegt über ein kleines Programm, welches ich mit Visual-Studio in VB.Net erstelle, die unnötigen Spalten automatisch löschen zu lassen, in dem das Programm nach den Überschriften/Bezeichnungen sucht.
Nach intensiver Suche bin ich auch schon auf einen gut Ansatz für mich gestoßen, aber leider wird mir die Zeile 25+27 falsch angegeben.
Zusätzlich hatte die Datei Verknüpfung gefehlt, diese habe ich in Zeile 9-11 angepasst - ich hoffe das ist so richtig!?
Wenn ich "Option Strict On" rausnehme, habe ich zwar keine Fehler mehr, aber das Programm macht dann trotzdem nicht was es soll und die Excel-Datei wird gesperrt, da sie dann in Verwendung ist und ich Excel dann per Taskmanager schließen muss.
Könnt ihr mir bitte helfen mit dem Code?
Hier ist mein aktueller Code :
VB.NET-Quellcode
- Option Strict On
- Imports System.IO
- Imports Microsoft.Office.Interop
- Public Class Form1
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim Excel As Microsoft.Office.Interop.Excel.Application
- Dim xlWB As Microsoft.Office.Interop.Excel.Workbook
- Dim Path = "K:\Temp\Test.xlsx"
- Excel = New Microsoft.Office.Interop.Excel.Application
- xlWB = Excel.Workbooks.Open(Path)
- Dim xlWSTabelle1 As Excel.Worksheet = CType(CType(xlWB.Sheets("Tabelle1"), Excel.Worksheet), Excel.Worksheet)
- Dim xlWSTabelle2 As Excel.Worksheet = CType(CType(xlWB.Sheets("Tabelle2"), Excel.Worksheet), Excel.Worksheet)
- Dim xlSheets As Object
- Dim xlSheetsArray(0 To 1) As Excel.Worksheet
- Dim k As Long
- Dim i As Long
- xlSheetsArray(0) = xlWSTabelle1
- xlSheetsArray(1) = xlWSTabelle2
- For Each xlSheets In xlSheetsArray
- With xlSheets
- k = .UsedRange.Columns.Count
- For i = k To 1 Step -1
- Select Case LCase(.UsedRange.Cells(1, i).Value)
- 'Diese Spalten nicht löschen
- Case "Ziffer", "#Num_IT", "Produkt A", "Kunde 1" '...
- Case Else
- 'alle anderen Spalten löschen
- .UsedRange.Columns(i).Delete()
- End Select
- Next i
- End With
- Next xlSheets
- End Sub