# Daten von Excel in VB einlesen



## pete_redman (7. März 2007)

Hallo zusammen!

Wie kann ich einen Zahlenwert der in einer Zelle z.B.Zelle ($B$12) in Excel steht
auf der Oberfläche von VB anzeigen lassen?
Wie lautet der Code.
Vielen Dank im Voraus.

Gruß
Pete


----------



## DrSoong (7. März 2007)

Und nochmal, ich habs dir schon in deinem ersten Post beantwortet. Für den Fall, dass du nicht weiter unten schauen kannst, hier nochmal der Link:
http://www.activevb.de/tipps/vb6tipps/tipp0050.html

So, und nun lass das Mehrfachposting, ich werd das mal den Mods melden.


Der Doc!


----------



## benni20 (11. März 2007)

Hallo,

ich habe das gleiche Problem wie der Autor dieses Beitrags und mir hilft der Link leider viel nicht weiter 
http://www.activevb.de/tipps/vb6tipps/tipp0050.html 
da ich in meiner Visual Studio Version die Windows Form CommonDialog1 nicht habe, ich bekomme die Fehlermeldung CommonDialog1 wurde nicht deklariert. Deshalb kann ich den Quellcode nicht ausprobieren und allein vom anschauen verstehe ich ihn nicht vollständig, ich bin auch noch ein VB Neuling.

Es wäre echt nett wenn mir einer erklären kann wie im VB Code festlegen kann auf welche Excel Datei auf meinem PC zugegriffen werden soll. Wie ich sie dann verwenden kann nehme ich an durch den Link verstanden zu haben.

danke
mfg
benni


----------



## Jacka (12. März 2007)

Hi!



> da ich in meiner Visual Studio Version die Windows Form CommonDialog1 nicht habe, ich bekomme die Fehlermeldung


Keine Panik! Das Control hast du, da bin ich mir sicher!  

Das CommonDialog Control musst du erst in dein Projekt einbinden.
Dazu gehst du im Menü unter Projekt -> Komponenten, machst bei "Microsoft Common Dialog Control 6.0" einen Haken und klickst auf OK.
Jetzt wirst du festellen, dass du in deiner Steuerelementliste ein weiteres Icon dazu bekommen hast. Das ist das CommonDialog Control.
Klicke es an und setzte es irgenwohin auf dein Form (ist im Betrieb dann unsichtbar!).

Jetzt kannst du den Code im Beispiel anwenden. Ich habe hier auch mal ein paar Zeilen zusammen geschrieben.
Mein Frame besteht aus einem Button (cmdBrowse) und einer Textbox (txtAnzeigen).
Das CommonDialog ist eigentlich der Standard-Windowsdialog für Öffnen/Speichern.

```
Private Sub cmdBrowse_Click()
Dim oExl As Object

Set oExl = CreateObject("Excel.Application")
oExl.Visible = True

On Error Resume Next
  With CommonDialog1
    .CancelError = True
    .Filter = "Excel-Files (*.xls)|*.xls" ' Filter setzen, nur Excel anzeigen

   ' Dialogfeld Öffnen anzeigen
    .ShowOpen
     If .FileName <> "" Then
       oExl.Workbooks.Open .FileName  'Ausgewähltes Excel-File wird geöffnen..
       oExl.Worksheets("Tabelle1").Activate  '.. und Tabelle1 aktiviert
   
      txtAnzeigen = oExl.ActiveSheet.Range("A1").Value  ' Inhalt der Zelle A1 wird ausgegeben.
     
    'schließen der Excelliste
      ActiveWorkbook.Close SaveChanges:=True  ' Änderungen werden gespeichert
      oExl.Quit
      Set oExl = Nothing
      
  End If
 End With
End Sub
```

Hoffe das hilft dir weiter!  

EDIT:
Du musst nicht zwingend das CommonDialog benutzten:
       oExl.Workbooks.Open "C:\temp\Beispiel"
So funktioniert es auch!


Viele Grüße,
Jacka


----------



## DrSoong (12. März 2007)

Der CommonDialog ist ja nur dazu da, dass du das Excel-File bequem auswählen kannst. Wenn du (aus welchen Gründen auch immer) den CommonDialog nicht verwenden kannst, bau die Prozedur Command1_Click einfach so um:

```
Private Sub Command1_Click()
 Dim sFilename$
 sFilename = InputBox("Welche Excel-Datei?")

 If sFilename <> "" Then
  Excel.Workbooks.Open sFilename
  LFlag = True
  Call Command2_Click
 End If
End Sub
```
In dem Fall hier wird über eine InputBox abgefragt, welche Datei geöffnet werden soll. Es muss in diesem Fall der Dateinamen inklusive des Pfades eingegeben werden.


Der Doc!


----------



## benni20 (14. März 2007)

Danke euch beiden, echt cool, funktioniert  

grüße
benni


----------



## twinx (26. September 2007)

Hallo,
ja schön. Aber wie bekomme ich dieses Bsp. in _Visual Basic 2005 Express Edition_?

Ach ja! Da bin ich wohl (mal wieder im falschen Forum gelandet, VB und VB.NET ist ja nicht das gleiche!) 
Ich kam halt über google hier rein, sorry. Dieses VB _Chaos_, ist doch nicht zum aushalten!


----------



## Jacka (30. September 2007)

Ah! Gut erkannt! 

Es müsste aber ähnlich funktionieren.
Nur für der Filedialog ist anders. Du musst nur ein OpenFileDialog einfügen.

Schau mal:

```
Private Sub cmdExcelauslesen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExcelauslesen.Click

        Dim xlApp As Excel.Application
        Dim xlMappe As Excel.Workbook
        Dim xlBlatt As Excel.Worksheet
        Dim wert As Variant

        With OpenFileDialog1
            .Filter = "Excel-Mappen (*.xls)|*.xls|Alle Dateien (*.*)|*.*"
            .FilterIndex = 1
            .InitialDirectory = "D:\Users\Test"
            .Title = "Excel-Files"

       If .ShowDialog() = DialogResult.OK Then              
          xlApp = New Excel.Application
          xlMappe = xlApp.Workbooks.Open(.FileName)
          xlBlatt = xlMappe.Worksheets(1)

          wert =  xlBlatt.Range("A1").Value 

         xlMappe.Close()

          xlApp = Nothing
          xlMappe = Nothing
          xlBlatt = Nothing
  
      End If
        End With  

    End Sub
```


Viele Grüße,
Jacka


----------

