Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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

Datei öffnen, dynamisch Werte kopieren, Datei sch

Datei öffnen, dynamisch Werte kopieren, Datei sch
05.02.2013 17:52:48
sascha
Moin Moin!
Habe hier gerade eine kleine Aufgabe, die ich bis jetzt auch durch Suchen noch nicht vom Ablauf her geregelt bekomme. Vielleicht hat ja jemand einen theoretischen Denkanstoss für mich.
Habe 2 Exceldateien im selben Verzeichnis liegen, daten.xlsx und diagramme.xlsx. Die Datei daten.xlsx wird von SPSS ausgegeben und enthält diverse Variablen mit zugehörigen Werten wie z.B:
A B
1 count_s 123
2 count_gesamt 52345
3 count_a 2342
Die Variablennamen sind fix,ihre Position allerdings nicht. Count_s steht z.B. je nach Projekt und verwendeten Hilfsvariaben auch mal an einer anderen Stelle.
Der zugehörige Wert natürlich immer rechts daneben.
Ich möchte nun in der Datei diagramme.xlsx ein Makro starten, dass die Datei daten.xlsx öffnet, alle benötigten Variablen findet, den zugehörigen Wert rechts neben dem Variablennamen an eine dann feste Position in diagramme.xlsx kopiert und daten.xlsx danach wieder schließt.
Die kopierten Werte möchte ich dann für die Erstellung der Diagramme benutzen. Damit müßte es dann ja möglich sein, die daten.xlsx zu tauschen und auf Knopfdruck die Diagramme neu erstellen zu lassen?!?
Ist dieser Gedankenweg so möglich? Oder kann man es anders/besser machen?
Gruß,
Sascha

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei öffnen, dynamisch Werte kopieren, Datei sch
06.02.2013 05:07:54
fcs
Hallo Sascha,
das was du möchtest ist so möglich. Auch die Umsetzung ist nicht so schwierig.
Nachfolgend ein Beispielmakro, das du entsprechend anpassen muss.
Gruß
Franz
Sub Get_SSPS_Data()
Dim wbkDiagramm As Workbook, wksData As Worksheet, strDateiSPSS As String
Dim wbkSPSS As Workbook, wksSPSS As Worksheet, StatusCalc As Long
Set wbkDiagramm = ActiveWorkbook
'Tabellenblatt in dass die Daten eingelesen werden sollen
Set wksData = wbkDiagramm.Worksheets("Data SPSS")
'Dateiauswahldialog anzeigen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte Datei mit SPSS-Daten öffnen"
If .Show = -1 Then
strDateiSPSS = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
'ohne Dialog:
'strDateiSPSS = wbkDiagramm.Path & "\Daten_SPSS.xlsx"
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'SPSS-Datendatei schreibgeschützt öffnen
Set wbkSPSS = Application.Workbooks.Open(Filename:=strDateiSPSS, ReadOnly:=True)
'Tabellenblatt mit Daten setzen
Set wksSPSS = wbkSPSS.Worksheets(1)
'Daten einlesen
wksData.Cells(2, 2).Value = fncFindValue(wks:=wksSPSS, varVariable:="count_s")
wksData.Cells(3, 2).Value = fncFindValue(wks:=wksSPSS, varVariable:="count_gesamt")
wksData.Cells(4, 2).Value = fncFindValue(wks:=wksSPSS, varVariable:="count_a")
'SPSS-Datendatei wieder schliessen
wbkSPSS.Close savechanges:=False
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
Beenden:
Set wbkDiagramm = Nothing: Set wksData = Nothing
Set wbkSPSS = Nothing: Set wksSPSS = Nothing
End Sub
Private Function fncFindValue(wks As Worksheet, varVariable) As Variant
Dim Zelle As Range
'zu Variable in Spalte A des Tabellenblatts den Wert in Spalte B zurückgeben
Set Zelle = wks.Columns(1).Find(What:=varVariable, LookIn:=xlValues, lookat:=xlWhole)
'Falls die Variablennamen nicht immer in Spalte A stehen, dann
'  Set Zelle = wks.UsedRange.Find(What:=varVariable, LookIn:=xlValues, lookat:=xlWhole)
If Zelle Is Nothing Then
fncFindValue = "#NV"
Else
fncFindValue = Zelle.Offset(0, 1).Value
End If
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige