Hallo,
ich will eine Tabelle aus Word kopieren und in ein Excel-Sheet einfügen. Das kann in eine neue oder schon vorhandene Mappe geschehen.
Das klappt soweit auch ganz gut, allerdings habe ich folgende Probleme:
1. Ich weiß nicht, wie man das immer an die erste Position macht, d.h. "dodoku" soll immer das erste Sheet in der Mappe sein
2. Wenn die Mappe schon existiert und "dodoku" auch, der User aber ein anderes Sheet beim Speichern vorher aktiv hatte, bekomme ich eine Fehlermeldung:
Wäre toll, wenn jemand eine Lösung für die Probleme wüsste
Lg, rory
EDIT: Bin selbst auf die zugegebenermaßen einfache Lösung gekommen: s. markierte Stellen, die Zeilen hab ich noch eingefügt
ich will eine Tabelle aus Word kopieren und in ein Excel-Sheet einfügen. Das kann in eine neue oder schon vorhandene Mappe geschehen.
Das klappt soweit auch ganz gut, allerdings habe ich folgende Probleme:
1. Ich weiß nicht, wie man das immer an die erste Position macht, d.h. "dodoku" soll immer das erste Sheet in der Mappe sein
2. Wenn die Mappe schon existiert und "dodoku" auch, der User aber ein anderes Sheet beim Speichern vorher aktiv hatte, bekomme ich eine Fehlermeldung:
Eine Ausnahme vom Typ "System.Runtime.InteropServices.COMException" ist in Microsoft.VisualBasic.dll aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.
Zusätzliche Informationen: Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
VB.NET-Quellcode
- Dim result As Integer = MessageBox.Show("Möchten Sie das Dokument in eine vorhandene Mappe kopieren?", "Export nach Excel", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
- Dim oExcel As Object
- Dim oBook As Object
- Dim sheet As Object
- Dim bool As Boolean = False
- oExcel = CreateObject("Excel.Application")
- Globals.ThisDocument.Tables(1).Range.Copy() 'markiert nur die erste Tabelle
- 'wenn man nicht abbricht
- If Not result = DialogResult.Cancel Then
- 'wenn man in eine vorhandene Mappe kopieren möchte
- If result = DialogResult.Yes Then
- Dim FileOpen As New OpenFileDialog
- Dim str As String
- With FileOpen
- .Filter = "Excel-Dateien |*.xl;*.xlsx;*.xlsm;*.xlsb;*.xlam;*.xltx;*.xltm;*.xls;*.xla;*.xlt;*.xlm;*.xlw|Alle Dateien (*.*)|*.*"
- .FilterIndex = 1
- .InitialDirectory = "H:\"
- .Title = "Excel-Mappe auswählen"
- .ShowDialog()
- str = .FileName
- End With
- 'wenn der Pfad nicht leer ist
- If Not str = "" Then
- oBook = oExcel.Workbooks.open(str)
- For Each oSheet As Object In oBook.worksheets
- If oSheet.name = "dodoku" Then
- bool = True 'wenn es das Sheet "dodoku" schon gibt, soll es nur überschrieben werden
- End If
- Next
- oExcel.Visible = True
- If bool = False Then 'wenn es "dodoku" nicht gibt, muss es neu erstellt werden
- oBook.worksheets(1).select <------
- sheet = oBook.worksheets.add()
- sheet.name = "dodoku"
- End If
- 'Kopiertes einfügen
- oBook.worksheets("dodoku").select <------
- oBook.Worksheets("dodoku").unprotect()
- oBook.Worksheets("dodoku").Range("A2").Select()
- oBook.Worksheets("dodoku").Paste()
- oBook.Worksheets("dodoku").Range("E1").Value = "dodoku"
- oBook.worksheets("dodoku").Columns(1).ColumnWidth = 1
- oBook.worksheets("dodoku").Columns(2).ColumnWidth = 22
- oBook.worksheets("dodoku").Columns(3).ColumnWidth = 46
- oBook.worksheets("dodoku").Columns(4).ColumnWidth = 1
- oBook.Worksheets("dodoku").Range("G1").Select()
- oBook.worksheets("dodoku").Protect()
- End If
- 'wenn man in eine neue Mappe einfügen will
- ElseIf result = DialogResult.No Then
- oBook = oExcel.Workbooks.Add()
- oExcel.Visible = True
- sheet = oBook.worksheets.add() 'neues Sheet "dodoku" wird erstellt
- sheet.name = "dodoku"
- 'Kopiertes einfügen
- oBook.Worksheets("dodoku").Range("A2").Select()
- oBook.Worksheets("dodoku").Paste()
- oBook.Worksheets("dodoku").Range("E1").Value = "dodoku"
- oBook.worksheets("dodoku").Columns(1).ColumnWidth = 1
- oBook.worksheets("dodoku").Columns(2).ColumnWidth = 22
- oBook.worksheets("dodoku").Columns(3).ColumnWidth = 46
- oBook.worksheets("dodoku").Columns(4).ColumnWidth = 1
- oBook.worksheets("dodoku").Protect()
- End If
- End If
Wäre toll, wenn jemand eine Lösung für die Probleme wüsste
Lg, rory
EDIT: Bin selbst auf die zugegebenermaßen einfache Lösung gekommen: s. markierte Stellen, die Zeilen hab ich noch eingefügt
"Es ist sehr einfach, ein Programm zu schreiben, das innerhalb kürzester Zeit und mit wenig Speicherplatzbedarf ein vorgegebenes Problem NICHT löst." - H.A. Klaeren
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „rory“ ()