Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Auslesen von Daten aus anderer Datei

Auslesen von Daten aus anderer Datei
26.06.2023 11:46:15
OFV_Tigier

Hallo Zusammen!
Falls es dieses Thema schon einmal gab, freue ich mich über einen Link oder Hinweis, denn ich habe leider den passenden Beitrag nicht gefunden.

Mein Problem stellt sich wie folgt dar:
Ich habe eine vorgefertigte Excel mit einer VBA.
Diese soll mir aus einer zu öffnenden Excel-Datei Daten auslesen und in meine Datei eintragen.

Damit ich in meine aktuelle Datei über Range die ausgelesenen Daten einsetzen kann, versuche ich mit

Set wksOrig = ActiveWorkbook

mir das aktuelle Workbook zu setzen um es später mit
wksOrig.Range("O9").Value = wks.Cells(lngZeile, 1)

zu füllen.

Die fremde Datei öffne ich mit:
Set wks = Workbooks.Open(strDatei).Sheets(1)


Leider bekomme ich beim "Set wksOrig = ActiveWorkbook" folgenden Fehler:
"Laufzeitfehler 13: Typen unverträglich"

obwohl ich wks und wksOrig mit
Public wks As Worksheet
Public wksOrig As Worksheet

initialisiert habe.

Was mache ich falsch? :)

Vielen Dank.

Im Code liest sich das so:

Public wks As Worksheet
Public wksOrig As Worksheet

Sub MeinVBA()
'
' VBA
'
    Set wksOrig = ActiveWorkbook
    ' Öffne fremdes Excel
    strDatei = Application.GetOpenFilename
    If strDatei > False Then
        Set wks = Workbooks.Open(strDatei).Sheets(1)
    Else
        Exit Sub
    End If
    ' Check vars
    strSpalte(1) = "Name"
    strSpalte(2) = "Meilen"
    strSpalte(3) = "Preis"
    strSpalte(4) = "Kosten"
    Dim notThere As String
    
    For Each element In strSpalte
        If wks.Application.CountIf([A1:Z1], element) = 0 Then
            notThere = notThere + element + vbCrLf
        End If
    Next element
    
    '
    If notThere = "" Then
        For lngZeile = 2 To Cells(Rows.Count, 5).End(xlUp).Row
            Select Case wks.Cells(lngZeile, 5)
            Case "Miami"
                wksOrig.Range("O9").Value = wks.Cells(lngZeile, 1)
                wksOrig.Range("O10").Value = wks.Cells(lngZeile, 2)
            ' hier sind noch eine Menge Cases :)
            End Select
        Next lngZeile
        wks.Parent.Close False
        Set wks = Nothing
        
        
        ' Druckdialog aufrufen
        ActiveSheet.PrintPreview
        'Application.Dialogs(xlDialogPrint).Show
        
    Else
        Dim strErrorMsg As String
        strErrorMsg = "Fehler! Es fehlen Spalten im Export:" + vbCrLf + notThere
        MsgBox strErrorMsg, vbCritical, "Spalten falsch!"
    End If
    
    
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslesen von Daten aus anderer Datei
26.06.2023 12:19:34
MCO
Moin!

Schau mal
du hast Set wksOrig = ActiveWorkbook deklariert mit Public wksOrig As Worksheet

Du bekommst damit auch später noch probleme, weil die sheet-angabe fehlt.
Es müsste heißen Set wksOrig = ActiveWorkbook.sheets(1) (oder sonst ein Index...)

Gruß MCO


AW: Auslesen von Daten aus anderer Datei
26.06.2023 12:26:24
Piet
Nachtrag

Alternativ könntest du auch Set als Object deklarieren, ohne Workbook oder Worksheet.
Bedenke aber bitte den elementaren Unterschied zwischen - ThisWookbook und ActiveWorkbook-!
Das führt sonst schnell zu Fehlern!

mfg Piet


Anzeige
AW: Auslesen von Daten aus anderer Datei
26.06.2023 12:21:04
Piet
Hallo

pass bitte auf ob du Workbook oder Worksheet deklarierst! Active Workbook ist KEIN Worksheet!!
Ich würde auch ThisWorkbook nehmen, denn nach dem Open ist die geöffnete Datei das Aktive Workbook!
Der Code könnte dann im falschen Workbook ausgeführt werden.

mfg Piet


AW: Auslesen von Daten aus anderer Datei
26.06.2023 12:44:53
OFV_Tigier
Hallo Piet, hallo MCO,

da habe ich den Wald vor Bäumen nicht gesehen.

Workbook als Deklaration hat geholfen.

@Piet: ThisWorkbook funktioniert für meinen Anwendungszweck nicht, da ich das VBA ausgelagert habe.
Somit bin ich dazu "verdammt" das VBA vom richtigen Sheet aus auszuführen. ;)

Vielen Dank!

Korrektur lautet:
Public wks As Worksheet
Public wksOrig As Workbook

Sub MeinVBA()
'
' VBA
'
    Set wksOrig = ActiveWorkbook
    ' Öffne fremdes Excel
    strDatei = Application.GetOpenFilename
    If strDatei > False Then
        Set wks = Workbooks.Open(strDatei).Sheets(1)
    Else
        Exit Sub
    End If
    ' Check vars
    strSpalte(1) = "Name"
    strSpalte(2) = "Meilen"
    strSpalte(3) = "Preis"
    strSpalte(4) = "Kosten"
    Dim notThere As String
    
    For Each element In strSpalte
        If wks.Application.CountIf([A1:Z1], element) = 0 Then
            notThere = notThere + element + vbCrLf
        End If
    Next element
    
    '
    If notThere = "" Then
        For lngZeile = 2 To Cells(Rows.Count, 5).End(xlUp).Row
            Select Case wks.Cells(lngZeile, 5)
            Case "Miami"
                wksOrig.Sheets(1).Range("O9").Value = wks.Cells(lngZeile, 1)
                wksOrig.Sheets(1).Range("O10").Value = wks.Cells(lngZeile, 2)
            ' hier sind noch eine Menge Cases :)
            End Select
        Next lngZeile
        wks.Parent.Close False
        Set wks = Nothing
        
        
        ' Druckdialog aufrufen
        ActiveSheet.PrintPreview
        'Application.Dialogs(xlDialogPrint).Show
        
    Else
        Dim strErrorMsg As String
        strErrorMsg = "Fehler! Es fehlen Spalten im Export:" + vbCrLf + notThere
        MsgBox strErrorMsg, vbCritical, "Spalten falsch!"
    End If
    
    
End Sub


Anzeige
AW: Auslesen von Daten aus anderer Datei
26.06.2023 13:45:23
onur
"das VBA ausgelagert habe" - Du meinst wohl das MAKRO, VBA ist die Programmiersprache. Genausowenig richtig ist "vorgefertigte Excel" - natürlich vorgefertigt, und zwar von Microsoft. Was du wohl meinst, ist eine Exceldatei oder ein Workbook.
Ist das Profi-Slang ? Sagst du auch immer: "ich habe eben eine Outlook bekommen und soll gleich einen Powerpoint halten" ???

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige