vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: Vaubehnet
Datum: 26.04.18 08:03

Guten Morgen,

ich übergebe den Inhalt eines Datagridviews in eine Excel-Datei.
Damit ich den Code nicht aus jedem Formular neu schreiben muss, habe ich die Routine in ein Modul ausgelagert.
Formular und Datagridview werden als Variablen übergeben.
Das funktioniert auch einwandfrei.

Aber: Die Spaltenüberschriften des Datagridviews kann ich derzeit nur übergeben, wenn "Option Strict On" deaktiviert ist

Fehlermeldung: "Option Strict on" lässt spätes Binden nicht zu.

Ich vermute, die Lösung liegt in der Verwendung von "DirectCast" oder "TypeOf".

Aber das kriege ich nicht hin. Hier ist der Codeabschnitt:

'Überschriften aus Datagridview übernehmen
        For col As Integer = 0 To strdgv.Columns.Count - 1
 
            'Hinweise:
            '1. xlApp wurde weiter oben definiert: 
            '   Dim xlApp = CType(CreateObject("Excel.Application"), 
            ' Excel.Application)
            '2. strDgv = Variable für das Datagridview, wird an die Sub 
            ' übergeben
            '   ByVal strdgv As DataGridView
 
            'Problem: folgende beiden Zeilen funktionieren nur ohne Option 
            ' Strict On - wie muss der korrekte Code lauten?
            xlApp.Cells(intZeileStart - 1, col + intSpalteStart).value = _
              strdgv.Columns.Item(col).HeaderText
            xlApp.Cells(intZeileStart - 1, col + intSpalteStart).interior.color _
            = RGB(227, 247, 255) 'hellblau
        Next
Vielen Dank schon mal für die Hilfe!

Vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: effeff
Datum: 26.04.18 09:14

Deine im Grid angezeigten Daten müssen ja irgendwo herkommen; In der Regel wird das eine DataTable sein. Dann brauchst Du nur den Column-Name zu übergeben...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: Vaubehnet
Datum: 26.04.18 10:24

Hallo effeff,

ja, die Bindung ist an einer Datatable.
Aber damit ich mein Excel-Übergabemodul universell nutzen kann (d.h. später ggf. auch für Datagrids, die manuell befüllt wurden), will ich auf die Spaltennamen des Datagridviews zugreifen.

xlApp.Cells(intZeileStart - 1, col + intSpalteStart).value = _
  strdgv.Columns.Item(col).HeaderText
Und der direkte Zugriff auf die Datatable löst nicht mein zweites Problem:

xlApp.Cells(intZeileStart - 1, col + intSpalteStart).interior.color = RGB(227, _
  247, 255) 'hellblau
Beste Grüße

Vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: effeff
Datum: 26.04.18 10:42

//Aber damit ich mein Excel-Übergabemodul universell nutzen kann (d.h. später ggf. auch für Datagrids, die manuell befüllt wurden), will ich auf die Spaltennamen des Datagridviews zugreifen.//

Das verstehe ich nicht; Auch wenn das DataGridView manuell befüllt wird, befindet sich doch dann eine DataTable dahinter...

Das DataGridView dient nur der Anzeige von Daten; Die Daten selber werden immer woanders gehalten...

Option Strict On lässt spätes Binden generell nicht zu!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: Vaubehnet
Datum: 26.04.18 11:08

Also:

Problem 1 bekomme ich gelöst, wenn ich .value weglasse:

'Option Strict on Problem:
xlApp.Cells(intZeileStart - 1, col + intSpalteStart).value = _
  strdgv.Columns.Item(col).HeaderText
 
'Option Strict on gelöst: .value weglassen
xlApp.Cells(intZeileStart - 1, col + intSpalteStart) = _
  strdgv.Columns.Item(col).HeaderText
//effeff: Option Strict On lässt spätes Binden generell nicht zu!

Ja.
Aber dennoch ist es sicher möglich, einer Excel-Zelle zur Laufzeit einen Wert oder eine Eigenschaft (Farbe, Rahmen etc.) zuzuweisen.

Beispiel für einen Code, der ebenfalls den "Späte-Bindung-Fehler" erzeugt, nebst Lösung:
'Beispiel:
'Führt zu einem Fehler bei Option Strict on (Option Strict On lässt spätes 
' Binden nicht zu):
Dim xlApp = CreateObject("Excel.Application")
 
'CType löst das Problem bei Option Strict on:
Dim xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
Daher meine Vermutung: "xlApp.Cells" muss auch mit CType / DirectCast behandelt werden.

'Fehler bei Option Strict On:
xlApp.Cells(intZeileStart - 1, col + intSpalteStart).interior.color = RGB(227, _
  247, 255) 'hellblau
Aber leider habe ich keine Idee, wie.


Vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: HenryV
Datum: 26.04.18 15:38

Hallo Vaubehnet

Das Cells-Object musst du in einen Excel.Range casten.

Gruss HenryV
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: Vaubehnet
Datum: 29.04.18 14:15

Hallo Henry,

ich habe jetzt einige Stunden Versuche hinter mir und bekomme es einfach nicht hin.

Hast Du vielleicht ein Beispiel (anhand meines Codes), wie das geht?

Danke schon mal,

Vaubehneht

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Excel-Export: Option Strict on Spätes Binden - Late Binding 
Autor: Vaubehnet
Datum: 29.04.18 14:33

Ich glaube, ich habe es herausgefunden (schwierige Geburt, wenn man Anfänger ist...):

Einige Beispiele zur Vermeidung des "Late Binding / Spätes Binden-Fehlers), falls das für andere von Interesse ist:

'Beispiel 0 - Definition der Excel-Anwendung
Dim xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
 
'Beispiel 1 - Farbe der Zelle
CType(xlApp.Cells(intZeileStart - 1, col + intSpalteStart), _
  Excel.Range).Interior.Color = lngColorHeader 'hellblau
 
'Beispiel 2 - Numberformat
CType(xlApp.Cells(row + intZeileStart, col + intSpalteStart), _
  Excel.Range).NumberFormat = "@"
 
'Beispiel 3 - Ränder
CType(xlApp.Cells(intZeileStart - 1, col + intSpalteStart), _
  Excel.Range).Borders.LineStyle = bytRahmenHeaderArt
Falle es daran etwas auszusetzen gibt, bin ich für jeden Hinweis dankbar.

Und: Danke an alle für Eure Hilfe und Anregungen!

Vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel