Excel VBA Denkfehler?!

Althir81

Lieutenant
Registriert
Dez. 2002
Beiträge
537
Hallo zusammen,

schaut bitte einmal drüber, bin glaube ich gerade betriebsblind.

Der Dateiname soll aus Strings zusammengesetzt werden. Die Inhalt stehen in Zelle B2 und B3.

Code:
Sub werkzeugKW()

Dim Pfad        As String
Dim Dateiname   As String
Dim Blatt       As String
Dim Zellen      As String

Dim a           As String
Dim b           As String
Dim c           As String
Dim d           As String

    a = "B2"
    b = "_"
    c = "B3"
    d = ".xlsm"

    Pfad = "C:\1\"
   
    ' Dateiname = "HZRA3A080050S02_BA33259.xlsm"
   
    Dateiname = a & b & c & d
    Blatt = "Werkzeugkennwerte"
    Zellen = "B4:B10"

    If GetDataClosedWB(Pfad, _
            Dateiname, _
            Blatt, _
            Zellen, _
            Worksheets("Ausschussquittung").Range("K52:K58")) Then
        MsgBox "Werkzeugkennwerte importiert"
    End If
   
End Sub
 
Hi,

um den Inhalt der Zellen B2 und B3 zu verwenden kannst Du Range verwenden.

Was Du aber mit "Zellen = "B4:B10"" vorhast, verstehe ich nicht ganz.

Code:
Sub werkzeugKW()

Dim Pfad        As String
Dim Dateiname   As String
Dim Blatt       As String
Dim Zellen      As String

Dim a           As String
Dim b           As String
Dim c           As String
Dim d           As String

    a = Range("B2")
    b = "_"
    c = Range("B3")
    d = ".xlsm"

    Pfad = "C:\1\"
 
    ' Dateiname = "HZRA3A080050S02_BA33259.xlsm"
 
    Dateiname = a & b & c & d
    Blatt = "Werkzeugkennwerte"
    Zellen = "B4:B10" '?????????????

    If GetDataClosedWB(Pfad, _
            Dateiname, _
            Blatt, _
            Zellen, _
            Worksheets("Ausschussquittung").Range("K52:K58")) Then
        MsgBox "Werkzeugkennwerte importiert"
    End If
End Sub
 
Zuletzt bearbeitet:
Mir scceint das auch nach einer Musterdatei aus dem Lehrbuch die keine Praktiker so wirklich einsetzen würde.

Zellen ist schlich ein String den Unsere Funktion GetDataClosedWB so braucht, wozu auch immer. Hätte ggf. Bereich heißen können.

@Althir81
Wir brauchen mehr Fleisch. Wie sieht nun die Arbeitsmappe aus, wie die die geöffnet wird und was tut jene Funktion?

CN8
 
@Community:

Sorry...

Code:
Public Function GetDataClosedWB(SourcePath As String, _
                                SourceFile As String, _
                                sourceSheet As String, _
                                SourceRange As String, _
                                TargetRange As Range) As Boolean

Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte

   On Error GoTo InvalidInput

   strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & _
               sourceSheet & "'!" & _
               Range(SourceRange).Cells(1, 1).Address(0, 0)

   Zeilen = Range(SourceRange).Rows.Count
   Spalten = Range(SourceRange).Columns.Count

   With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
      .Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
      .Value = .Value
   End With

   GetDataClosedWB = True
   Exit Function

InvalidInput:
   MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
          vbExclamation, "Get data from closed Workbook"
   GetDataClosedWB = False
End Function

Dort stehen Werte die aus einer anderen Excel-Datei kopiert werden. Das klappt auch, ich brauche nur als Quelle eine Datei mit dem Namen aus Zellen B2 + B3

Gruß
Oliver
Ergänzung ()

Stonerrock schrieb:
Hi,

um den Inhalt der Zellen B2 und B3 zu verwenden kannst Du Range verwenden.

Was Du aber mit "Zellen = "B4:B10"" vorhast, verstehe ich nicht ganz.

Code:
Sub werkzeugKW()

Dim Pfad        As String
Dim Dateiname   As String
Dim Blatt       As String
Dim Zellen      As String

Dim a           As String
Dim b           As String
Dim c           As String
Dim d           As String

    a = Range("B2")
    b = "_"
    c = Range("B3")
    d = ".xlsm"

    Pfad = "C:\1\"
 
    ' Dateiname = "HZRA3A080050S02_BA33259.xlsm"
 
    Dateiname = a & b & c & d
    Blatt = "Werkzeugkennwerte"
    Zellen = "B4:B10" '?????????????

    If GetDataClosedWB(Pfad, _
            Dateiname, _
            Blatt, _
            Zellen, _
            Worksheets("Ausschussquittung").Range("K52:K58")) Then
        MsgBox "Werkzeugkennwerte importiert"
    End If
End Sub

Funktioniert xD

Danke Danke Danke!

Gruß
Oliver
 
Zuletzt bearbeitet:
Oder auch nicht ...

ich hatte zum Test das Arbeitsblatt umbenannt, weder mit lokaler Datei, noch UNC-Pfad findet er die Datei...


1626248270956.png
 
Zurück
Oben