Der Zugriff auf Excel-Zellen war beim Einsatz von Excel 2000 bis 2012 über folgende Zeilen möglich:
Option Explicit On
Option Strict Off
Public Class Form1
Dim Exc As Object
Private Sub btnMappeOeffnen_Click(sender As Object, e As EventArgs) Handles _
btnMappeOeffnen.Click
Try
Exc = GetObject(System.Environment.CurrentDirectory & _
"\Mappe1.xlsx")
Exc.Application.Visible = True
Exc.Windows(1).Visible = True
Me.Activate()
Catch ex As Exception
MessageBox.Show(ex.Message, "Excel-Fehler", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnLesenSchreiben_Click(sender As Object, e As EventArgs) _
Handles btnLesenSchreiben.Click
Try
'Wert aus Zelle A1 lesen und nach Zelle B1 schreiben
Exc.worksheets(1).cells(1, 2).Value = Exc.Worksheets(1).Cells(1, _
1).Value
Catch ex As Exception
MessageBox.Show(ex.Message, "Excel-Fehler", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub Der besondere Vorteil: Es war kein Verweis auf das Excel-Objektmodel nötig. Es war also unerheblich, ob auf dem Zielrechner Excel 2000 oder Excel 2012 installiert war. Das Problem mit dem xlsx-Format lasse ich mal außen vor.
Seit Excel2013 komme ich nicht mehr ohne den Verweis auf die Excel(15.0)-Objektbibliothek aus, was ich als Nachteil empfinde:
Option Explicit On
Option Strict Off
Public Class Form1
Dim Exc As New Microsoft.Office.Interop.Excel.Application
Private Sub btnMappeOeffnen_Click(sender As Object, e As EventArgs) Handles _
btnMappeOeffnen.Click
Try
Exc.Workbooks.Open(System.Environment.CurrentDirectory + _
"\Mappe1.xlsx")
Exc.Visible = True
Exc.Windows(1).Visible = True
Me.Activate()
Catch ex As Exception
MessageBox.Show(ex.Message, "Excel-Fehler", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnLesenSchreiben_Click(sender As Object, e As EventArgs) _
Handles btnLesenSchreiben.Click
Try
'Wert aus Zelle A1 lesen und nach Zelle B1 schreiben
Exc.worksheets(1).cells(1, 2).Value = Exc.Worksheets(1).Cells(1, _
1).Value
Catch ex As Exception
MessageBox.Show(ex.Message, "Excel-Fehler", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub Gibt es eine Zugriffsmöglichkeit ohne Verweis auf die Excel-Objektbibliothek? |