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

VBA: Schleife unterbrechen um ext. Daten zu laden

VBA: Schleife unterbrechen um ext. Daten zu laden
katharina
Hallo zusammen
Die Ausgangslage ist die folgende:
Ich habe ein Spreadsheet. Im 1. Sheet ist eine Liste mit ISINs. Eine ISIN gehört zu einem (Finanz)Produkt.
In weiteren sheets stehen verschiedene Daten.
Dann gibt es ein Output sheet, das ich über die ISIN steuern kann, d.h. je nachdem welche ISIN ich auswähle werden verschiedene Daten, Charts etc im Output angezeigt.
Nun habe ich eine Schleife in einem Makro die folgendes macht:
Eine ISIN wird aus der Liste ausgewählt, dann in das Eingabefeld kopiert und das Output sheet wird als Pdf abgespeichert. Dann geht die Schleife zur nächsten ISIN in der Liste und macht das gleiche usw.
Das Makro funktioniert also im Prinzip folgendermassen: Schleife = ISIN kopieren --> Pdf erstellen
Das Makro funktioniert soweit, das Problem ist folgendes:
Die individuellen Daten greifen z.T. auf externe Quellen (namentlich: Bloomberg) zurück und es braucht immer einen Moment bis die Daten alle aufgebaut werden. Wenn ich manuell eine ISIN kopiere muss ich ca. 5 Sek warten bis alles richtig aufgebaut ist.
Ich habe versucht, diese 5 Sekunden Wartezeit auch in das Makro einzubauen (über Application.Wait). Das hat allerdings nicht funktioniert, weil auch wenn das Makro stillsteht, ist das Makro immer noch aktiv und kann nicht auf die externen Daten zugreifen.
Es muss irgendwie eine Lösung, in der man zeitweise aus dem Makro rausgeht. Ich habe mir das so gedacht, dass ich Makro1 habe, welches die ISIN kopiert und Makro2 welches den Output abspeichert.
Die Prozedur würde als jetzt so aussehen: ISIN kopieren (Makro1) --> Exit Makro --> nach 5 sek Wartezeit Output speichern (Makro2).
Mein Problem ist nun, das Ganze in eine Schleife zu packen, sprich ISIN1 kopieren --> Exit --> Output1 speichern --> ISIN2 kopieren --> Exit --> Output2 speichern etc.
Könnt ihr mir da weiterhelfen? Ich wäre überglücklich!!!
Mein ursprünglicher Code ist wie folgt:
Sub PrintAll()
Set InputRange = ActiveWorkbook.Worksheets("Cockpit").Range("B4:B100")
For Each cell In InputRange
If cell > 0 Then
'copy ISIN in Reporting sheet (A1) to generate Reporting
ActiveWorkbook.Worksheets("Reporting").Range("A1") = cell.Value
'Create File name
Dim SaveName As String
SaveName = ActiveWorkbook.Worksheets("Reporting").Range("A1").Value & "_" & _
ActiveWorkbook.Worksheets("Cockpit").Range("B2").Value & _
ActiveWorkbook.Worksheets("Cockpit").Range("C2").Value & ".pdf"
'Stop Macro to let all prices, charts etc build up 
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
'save as PDF
ActiveWorkbook.Worksheets("Reporting").ExportAsFixedFormat Type:=xlTypePDF, _
FileName:= _
"G:\...\" _
& SaveName, Quality:=xlQualityStandard, IgnorePrintAreas:=False
End If
Next cell
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Schleife unterbrechen um ext. Daten zu laden
10.09.2012 16:52:40
Rudi
Hallo,
teste mal.
Option Explicit
Dim SaveName As String
Sub PrintAll()
Dim InputRange As Range
Set InputRange = ActiveWorkbook.Worksheets("Cockpit").Range("B4:B100")
Static myRow As Long
myRow = myRow + 1
If myRow > InputRange.Rows.Count Then
myRow = 0
Exit Sub
End If
Do While InputRange.Cells(myRow) = 0
myRow = myRow + 1
If myRow > InputRange.Rows.Count Then
myRow = 0
Exit Sub
End If
Loop
'copy ISIN in Reporting sheet (A1) to generate Reporting
ActiveWorkbook.Worksheets("Reporting").Range("A1") = InputRange.Cells(myRow).Value
'Create File name
SaveName = ActiveWorkbook.Worksheets("Reporting").Range("A1").Value & "_" & _
ActiveWorkbook.Worksheets("Cockpit").Range("B2").Value & _
ActiveWorkbook.Worksheets("Cockpit").Range("C2").Value & ".pdf"
'Stop Macro to let all prices, charts etc build up 

Gruß
Rudi

Anzeige
AW: VBA: Schleife unterbrechen um ext. Daten zu laden
10.09.2012 17:35:29
katharina
Rudi, ich bin begeistert!!!!
Vielen Dank, das ist super. Könntest du mir die Logik dahinter noch erklären?
Gruss
Katharina

AW: VBA: Schleife unterbrechen um ext. Daten zu laden
10.09.2012 17:41:09
katharina
Rudi, ich bin begeistert!!!!
Vielen Dank, das ist super. Könntest du mir die Logik dahinter noch erklären?
Gruss
Katharina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige