Hi DbSam,
also das ist mein Code, der im Hauptmodul hinterlegt ist:
Code:
Sub Matching()
'Allgemein benötigte Variablen, welche Unabhaengig von der Bedatung sind
Dim OutputOrdner As String
Dim Typschluessel As String, Testtyp As String, Motortyp As String
Dim fso As Object
Dim Compass As String
Dim xlWBCompass As Workbook
Dim xlWSCompass As Worksheet
Dim TestDat As String
Dim xlAP As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
Set xlAP = CreateObject("Excel.Application")
Set xlWBCompass = xlAP.Workbooks.Open(OutputOrdner & "\compas_input_" & Typschluessel & ".xlsx")
Set xlWSCompassInputs = xlWBCompass.Sheets(2) 'Sheet(2) ist Tabelle "Input"
Testtyp = ActiveWorkbook.Worksheets(1).Range("B6").Value() 'Metadaten, die in "B1:B6" manuell eingetragen werden können
Typschluessel = ActiveWorkbook.Worksheets(1).Range("B1").Value() 'enthalten Informationen zum Fzg, Testfall
OutputOrdner = ActiveWorkbook.Worksheets("Tabelle2").Range("B14").Value() 'Zielpfad abgelegt in "B14"
Template = ActiveWorkbook.Worksheets("Tabelle2").Range("B13").Value() 'Template-Datei zur Datenbefüllung abgelegt in "B13"
Compass = OutputOrdner & "\compas_input_" & Typschluessel & ".xlsx" 'Die Datei, "compas_input.xlsx ist die Outputdatei, die mit Daten befüllt wird
Call fso.CopyFile(Template, Compass) 'Kopieren und Umbenennen der Outputdatei entsprechend des Typschlüssels
TestDat = ActiveWorkbook.Worksheets(1).Range("B4").Text()
'Daten
Dim Datenbefuellen As New Daten
Motortyp = Datenbefuellen.MethodDatenbefuellen(Test), (Motortyp), (Typschluessel), (OutputOrdner)
Der Code, der in der Klasse hinterlegt ist, sieht wie folgt aus:
Code:
Public Function MethodNATDatenbefuellen(Optional TestDat As String = "", Optional Motortyp As String = "", Optional Typschluessel As String = "", Optional OutputOrdner As String = "") As String
'Variablen, die zum Auslesen der Daten benötigt werden
Dim xlWBSource As Workbook
Dim xlWSSource As Worksheet
Dim xlWBCompass As Workbook
Dim xlWSCompass As Worksheet
Dim xlAP As Object
Dim identifier_Quelle As String
Dim Quellspalte, Quellzeile, Zielzeile As Integer
Set xlAP = CreateObject("Excel.Application")
Set xlWBCompass = xlAP.Workbooks.Open(OutputOrdner & "\compas_input_" & Typschluessel & ".xlsx")
Set xlWSCompass = xlWBCompass.Sheets(2) 'Sheet(2) ist Tabelle "Input"
Set xlWBSource = xlAP.Workbooks.Open(Sheets(4).Range("B9").Value(), ReadOnly:=True)
Set xlWSSourceNAT = xlWBSourceNAT.Sheets(1) 'Die NAT-Datei hat lediglich eine Tabelle
'Daten:
'Finden der Zellen, die befüllt werden sollen und Befüllung mit Daten aus der Quelle "NAT-Excel.xlsx"
'Finden von "fuel type"
identifier_Quelle = Sheets(2).Cells(8, 6).Text()
Quellzeile = xlWSSource.Range("A:B").Find(identifier_Quelle, LookIn:=xlValues, LookAt:=xlWhole).Row()
Quellspalte = xlWSSource.Cells.Find(NATTest, LookIn:=xlValues, LookAt:=xlWhole).Column()
xlWSSource.Cells(Quellzeile, Quellspalte).Copy
Zielzeile = xlWSCo2mpass.Range("A1:A200").Find(identifier_Quelle, LookIn:=xlValues, LookAt:=xlWhole).Row()
xlWSCo2mpass.Cells(Zielzeile, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Definieren des Motortyps in Abhaengigkeit von fuel type
Motortyp = xlWSCo2mpass.Cells(Zielzeile, 3).Value()
If InStr(1, Motortyp, "diesel", vbTextCompare) > 0 Then
Motortyp = "Diesel"
Else
Motortyp = "Otto"
End If
MethodNATDatenbefuellen = Motortyp
'Zurücksetzen der Definierten Variablen
Set xlAP = Nothing
Set xlWSSourceNAT = Nothing
Set xlWBSourceNAT = Nothing
Set xlWSCo2mpass = Nothing
Set xlWBCo2mpass = Nothing
End Function
Die von dir aufgezeigte Methode habe ich bereits ausprobiert und die Fehlermeldung erhalten, die ich oben angeführt habe.
Code:
Code:Rueckgabewert = Datenbefuellen.MethodDatenbefuellen("a", "b")
VG