Öffnen von Excel-File bei laufendenm VBA-Projekt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Öffnen von Excel-File bei laufendenm VBA-Projekt
von: Jan P
Geschrieben am: 19.04.2005 11:30:15
hallo dani,
du hattest dich ja bereits einmal meinem problem gewidmet.
mein posting ist leider bereits im archiv, ich hatte keine möglichkeit mehr, zu antworten.... (14.04.2005 17:35:11)
ich habe ein vba-projekt, also eine geöffnete excel-tabelle, mit einer userform im vordergrund, die nicht verschiebbar oder zu schließen ist.
über dieses vba-projekt soll nach aktivieren eines command-button alle werte aus einer bestimmten spalte aus eben dieser neuen zu öffnenden excel-tabelle ausgelesen werden. das sind circa 1-100 elemente, die dann in ein multi-choice-feld übertragen werden sollen.
die neue zu öffnende datei hat allerdings jede kalenderwoche einen neuen dateinamen und in der betroffenen spalte auch jedesmal neue werte. der dateiname sieht folgendermaßen aus:
xyz_0516 (für das jahr 2005 und die aktuelle kw16) in kw17: xyz_0517
die zu öffnende datei soll nur gelesen werden, also nicht neu gespeichert oder verändert werden.
ich benötige aus der datei dann je nach auswahl aus der multibox noch werte aus einigen spalten, die in der gleichen zeile stehen, je nachdem welche objekte ausgewählt wurden.
danke für jede unterstützung

Bild

Betrifft: AW: Öffnen von Excel-File bei laufendenm VBA-Projekt
von: Dani
Geschrieben am: 19.04.2005 12:42:16
Hallo Jan,
ich habe dir zwei Funktionen gebastelt eine für den dynamischen Dateinamen, die zweite liest Zellen aus geschlossenen Excel Files. Ich weiss dass das deine Probleme noch nicht löst aber ich möchte wissen ob wir auf dem richtigen Weg sind:


      
Function MakeFilename(d As Date) As String
Dim t As Date
Dim KW As Integer
Dim Dateinamen As String
    t = DateSerial(Year(d + (8 - Weekday(d)) 
Mod 7 - 3), 1, 1)
    KW = (d - t - 3 + (Weekday(t) + 1) 
Mod 7) \ 7 + 1
    Dateinamen = "xyz_" & KW & Right(t, 2)
MakeFilename = Dateinamen
End Function
Function Zelle_auslesen(Pfad, File As String, Zeile, Spalte As Long)
Zelle_auslesen = Application.ExecuteExcel4Macro("'" & Pfad & "[" & File & "]" & "Tabelle1'!R" & Zeile & "C" & Spalte & " ")
End Function 

     Code eingefügt mit Syntaxhighlighter 3.0

Gruss Dani
Bild

Betrifft: AW: Öffnen von Excel-File bei laufendenm VBA-Projekt
von: Jan P
Geschrieben am: 19.04.2005 12:58:21
hallo dani,
also den ersten code habe ich verstanden, denke ich.
eine abschließende frage hierzu:
der dateiname wird vorgegeben, d.h. die datei ist schon unter diesem dateinamen gespeichert und ich benötige eine funktion, die mir jede kw neu mitteilt, wie der dateiname denn nun aussieht, damit das vba-projekt diese dann auch öffnen kann.
in simplen worten: ich speichere ende der alten kw die datei unter dem neuen namen für die neue kw.

Function MakeFilename(d As Date) As String
Dim t As Date
Dim KW As Integer
Dim Dateinamen As String
    t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
    KW = (d - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
    Dateinamen = "xyz_" & KW & Right(t, 2)
MakeFilename = Dateinamen
End Function

nun zum zweiten teil des codes:

Function Zelle_auslesen(Pfad, File As String, Zeile, Spalte As Long)
Zelle_auslesen = Application.ExecuteExcel4Macro("'" & Pfad & "[" & File & "]" & "Tabelle1'!R" & Zeile & "C" & Spalte & " ")
End 

Function 
Tabelle1: ist wieder dynamisch und heisst wie der dateiname - z.b.: kw0516.
das habe ich vergessen zu erwähnen, aber da kann ich ja den oberen teil des codes umbauen.
beim auslesen der spalte "L":
alle werte, die dort untereinander stehen kopieren und in das multichoice einfügen.
die zeilen nicht komplett, sondern nur die dazugehörigen werte in spalte D, E und O!
diese dann aber nur in ein zu dem file mit dem vba-projekt gehörende excel-tabelle kopieren.....

Bild

Betrifft: AW: Öffnen von Excel-File bei laufendenm VBA-Projekt
von: Dani
Geschrieben am: 20.04.2005 13:15:10
Hallo Jan ich hab dir mal ein File gestrickt,
schau dir an der Code an er ist unter dem Formularfeld zu finden. Das Beispiel funktioniert mit einem Excelfile Text.xls den du in der Variable "Quelldatei" ändern kannst:
https://www.herber.de/bbs/user/21411.xls
Gruss Dani
Bild

Betrifft: AW: Öffnen von Excel-File bei laufendem VBA-Projekt
von: Jan P
Geschrieben am: 21.04.2005 10:29:13
hallo dani,
ich habe mir die datei einmal runtergeladen und mir den code angeschaut. ich glaube, wir haben aneinander vorbeigeredet... ich denke, dass ich teile deines codes verarbeiten kann, aber die generierung des dateinamens ist so gar nicht notwendig.
die datei, die ich neu öffnen möchte hat diesen dateinamen schon. der dateiname wird manuell erzeugt und hat die form xyz_0516 (jahr, kw). das soll nicht über das vba-projekt gesteuert werden. nur ist diese information ja wichtig, da durch den dynamischen dateinamen der vba-code angepasst werden muss, weil vba ja sonst die datei nicht öffnenm kann, wenn der name unbekannt ist bzw. eine alte version geöffnet wird. dachte vba könnte das aus dem jeweils gültigen datum ermitteln. der dateiname soll auch nicht von dem code geändert werden!
kann ich das so nutzen?
diser code-teil ist in einem sub:
' Öffnen der Datei WIP Report
Quellmappe = Dateinamen
Set exapp = New Excel.Application
exapp.Visible = False
exapp.Workbooks.Open "U:\WIP_Report_2005\" & Quellmappe
Set Datenquelle = exapp.Worksheets(Dateinamen)

Function MakeFilename(d As Date) As String
    ' Setzen des Dateinamens für den WIP-Report
        Dim t As Date
        Dim KW As Integer
        Dim Dateinamen As String
            t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
            KW = (d - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
            Dateinamen = "WIP Report " & KW & Right(t, 2)
            MakeFilename = Dateinamen
End Function

mit diesen beiden code-teilen möchte ich erreichen:
öffnen der arbeitsmappe WIP Report (je nach kw)
ich kann das programm leider nicht testen... zumindest noch nicht....
danke und gruss jan
Bild

Betrifft: AW: Öffnen von Excel-File bei laufendem VBA-Projekt
von: Dani
Geschrieben am: 22.04.2005 08:39:14
Hallo Jan,
das müsste so funktionieren. Du musst die Funktion benutzen um den Namen der zu öffnenden Datei zu generieren in dieser Art:
Quellmappe = MakeFilename (Date) 'Damit übergibst du der Funktion das aktuelle Datum und erhälst den zugehörigen Filnemn zurück
Set exapp = New Excel.Application
exapp.Visible = False
exapp.Workbooks.Open "U:\WIP_Report_2005\" & Quellmappe
Set Datenquelle = exapp.Worksheets(Dateinamen)


Function MakeFilename(d As Date) As String
    ' Setzen des Dateinamens für den WIP-Report
        Dim t As Date
        Dim KW As Integer
        Dim Dateinamen As String
            t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
            KW = (d - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
            Dateinamen = "WIP Report " & KW & Right(t, 2)
            MakeFilename = Dateinamen
End Function

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Formeln über UDF vergleichen"