Cognos Impromptu - Berichtsaufruf über Macro
Hallo zusammen,
ich habe ein kleines Problem und hoffe auf eure Hilfe.
Meine Lösungsversuche waren alle nicht erfolgreich...
Es geht um Folgendes:
ich rufe einen bestimmten Cognos Impromptu-Bericht über einen Macro-Befehl auf, welcher den Bericht nacheinander mit wechselnden Variablen aufruft, "auswertet" & abspeichert:
Set objImpApp = CreateObject("CognosImpromptu.Application")
objImpApp.OpenCatalog "Pfad der Datenquelle und Anmeldung an Bericht",1
strReportPath = "Pfad des Berichtes"
strExportPath = "Pfad der ausgegebenen Excel-Datei"
strReport = strReportPath & "Berichtsname.imr"
strPromptValues = "212"
strExportFilename = strExportPath & "Berichtsname" & strPromptValues & ".xls"
Set objImpRep = objImpApp.OpenReport (strReport, strPromptValues)
Set objImpRep = objImpApp.ActiveDocument
objImpRep.ExportExcelWithFormat strExportFilename
objImpRep.CloseReport
strPromptValues = "213"
strExportFilename = strExportPath & "Berichtsname" & strPromptValues & ".xls"
Set objImpRep = objImpApp.OpenReport (strReport, strPromptValues)
Set objImpRep = objImpApp.ActiveDocument
objImpRep.ExportExcelWithFormat strExportFilename
objImpRep.CloseReport
...
(diverse weitere Variablen)
...
objImpApp.Quit
Set objImpApp = Nothing
Set objImpRep = Nothing
'
endmac:
Soweit funktioniert das auch ohne Probleme. Ich bekomme also jeweils eine Exceldatei mit Daten zu der Variable 212, 213, 214,...
Nun will ich am Ende einen Summenabruf erzeugen, der alle Variablen gleichzeitig abfragt.
Wenn der Bericht manuell gestartet wird, ist die Eingabe 212,213,214 und funktioniert auch.
Dies macht er über das Macro allerdings nicht - es kommen immer nur die Daten zu der Variable 212!
Wie kann ich dem Macro klarmachen, dass er die Eingabe 212,213,214 "versteht" und ausführt?
Welches Trennzeichen ist in diesem Fall zu verwenden?
Systeminfo: Cognos Series 7 Version 4
Impromptu-Version 7.4.774.0
Vielen Dank im Voraus!
MeisterB
ich habe ein kleines Problem und hoffe auf eure Hilfe.
Meine Lösungsversuche waren alle nicht erfolgreich...
Es geht um Folgendes:
ich rufe einen bestimmten Cognos Impromptu-Bericht über einen Macro-Befehl auf, welcher den Bericht nacheinander mit wechselnden Variablen aufruft, "auswertet" & abspeichert:
Set objImpApp = CreateObject("CognosImpromptu.Application")
objImpApp.OpenCatalog "Pfad der Datenquelle und Anmeldung an Bericht",1
strReportPath = "Pfad des Berichtes"
strExportPath = "Pfad der ausgegebenen Excel-Datei"
strReport = strReportPath & "Berichtsname.imr"
strPromptValues = "212"
strExportFilename = strExportPath & "Berichtsname" & strPromptValues & ".xls"
Set objImpRep = objImpApp.OpenReport (strReport, strPromptValues)
Set objImpRep = objImpApp.ActiveDocument
objImpRep.ExportExcelWithFormat strExportFilename
objImpRep.CloseReport
strPromptValues = "213"
strExportFilename = strExportPath & "Berichtsname" & strPromptValues & ".xls"
Set objImpRep = objImpApp.OpenReport (strReport, strPromptValues)
Set objImpRep = objImpApp.ActiveDocument
objImpRep.ExportExcelWithFormat strExportFilename
objImpRep.CloseReport
...
(diverse weitere Variablen)
...
objImpApp.Quit
Set objImpApp = Nothing
Set objImpRep = Nothing
'
endmac:
Soweit funktioniert das auch ohne Probleme. Ich bekomme also jeweils eine Exceldatei mit Daten zu der Variable 212, 213, 214,...
Nun will ich am Ende einen Summenabruf erzeugen, der alle Variablen gleichzeitig abfragt.
Wenn der Bericht manuell gestartet wird, ist die Eingabe 212,213,214 und funktioniert auch.
Dies macht er über das Macro allerdings nicht - es kommen immer nur die Daten zu der Variable 212!
Wie kann ich dem Macro klarmachen, dass er die Eingabe 212,213,214 "versteht" und ausführt?
Welches Trennzeichen ist in diesem Fall zu verwenden?
Systeminfo: Cognos Series 7 Version 4
Impromptu-Version 7.4.774.0
Vielen Dank im Voraus!
MeisterB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158854
Url: https://administrator.de/forum/cognos-impromptu-berichtsaufruf-ueber-macro-158854.html
Ausgedruckt am: 25.04.2025 um 14:04 Uhr
8 Kommentare
Neuester Kommentar

Hallo MeisterB!
Gruß Dieter
Zitat von @MeisterB:
Wie kann ich dem Macro klarmachen, dass er die Eingabe 212,213,214 "versteht" und ausführt?
Sollte in etwa so gehen:Wie kann ich dem Macro klarmachen, dass er die Eingabe 212,213,214 "versteht" und ausführt?
Const strExportPath = "X:\..\Excel\"
Const strImportPath = "X:\..\Datenquelle"
Const strReportFile = "X:\..\Berichte\Berichtsname.imr"
Const intPromptVon = 212
Const intPromptBis = 214
Sub BerichtExport()
'.....
Set objImpApp = CreateObject("CognosImpromptu.Application")
Set objFso = CreateObject("Scripting.FileSystemObject")
objImpApp.OpenCatalog strImportPath, 1
For i = intPromptVon To intPromptBis
Set objImpRep = objImpApp.OpenReport(strReportFile, i).ActiveDocument
strExportFile = strExportPath & objFso.GetBaseName(strReportFile) & i & ".xls"
objImpRep.ExportExcelWithFormat strExportFile: objImpRep.CloseReport
Next
'.....
End Sub
Gruß Dieter

Hallo MeisterB!
In etwa so:
Wie möchtest Du den strPrompt erzeugen? Per Konstante oder InputBox-Abfrage?
Gruß Dieter
In etwa so:
Const strExportPath = "X:\..\Excel\"
Const strImportPath = "X:\..\Datenquelle"
Const strReportFile = "X:\..\Berichte\Berichtsname.imr"
Const strPrompt = "212,214,215,260,262,265,270,278"
Sub BerichtExport() 'alternativ per Übergabeparameter: Sub BerichtExport(ByRef strPrompt)
'.....
Set objImpApp = CreateObject("CognosImpromptu.Application")
Set objFso = CreateObject("Scripting.FileSystemObject")
objImpApp.OpenCatalog strImportPath, 1
arrRep = Split(strPrompt, ",") 'Array erzeugen arrRep(0) = 212, arrRep(1) = 214, ....
For Each strRep In arrRep 'Array von arrRep(0) bis arrRep(x) einzeln durchlaufen
If IsNumeric(Trim(strRep)) Then
Set objImpRep = objImpApp.OpenReport(strReportFile, Trim(strRep)).ActiveDocument
strExportFile = strExportPath & objFso.GetBaseName(strReportFile) & Trim(strRep) & ".xls"
objImpRep.ExportExcelWithFormat strExportFile: objImpRep.CloseReport
End If
Next
'.....
End Sub
Wie möchtest Du den strPrompt erzeugen? Per Konstante oder InputBox-Abfrage?
Gruß Dieter

Hallo MeisterB!

Gruß Dieter
Zitat von @MeisterB:
Zu Deiner Frage: der strPrompt soll im Macro über eine feste Konstante erzeugt werden!
(die Variablen sind bei den unterschiedlichen Summenabfragen eigentlich immer gleich...)
Ja, wäre Dein Problem damit jetzt gelöst? Wenn ja, dann bitte Beitrag als Gelöst markierenZu Deiner Frage: der strPrompt soll im Macro über eine feste Konstante erzeugt werden!
(die Variablen sind bei den unterschiedlichen Summenabfragen eigentlich immer gleich...)
Gruß Dieter

Hallo MeisterB!
Puh, dass hast Du jetzt aber ausführlich und verständlich erklärt
Sorry, da haben wir ja tatsächlich aneinander vorbei geredet
Aber zu diesem Problem, kann ich nicht viel sagen, da mir die Application "CognosImpromptu.Application" leider nicht zur Verfügung steht und von daher keinen blassen Dunst habe, wie die Parameter an die Application übergeben werden müssen
Was ich noch gefunden habe:
Ansonsten, habe ich leider keinen Plan
Gruß Dieter
Puh, dass hast Du jetzt aber ausführlich und verständlich erklärt
Sorry, da haben wir ja tatsächlich aneinander vorbei geredet
Aber zu diesem Problem, kann ich nicht viel sagen, da mir die Application "CognosImpromptu.Application" leider nicht zur Verfügung steht und von daher keinen blassen Dunst habe, wie die Parameter an die Application übergeben werden müssen
Was ich noch gefunden habe:
With objImpApp.OpenReport(strReportFile)
.RetrieveAll
.ExportExcelWithFormat strExportFile ', sind eventuell noch Parameter ala strPrompt zulässig?
.CloseReport
.Quit
End With
Gruß Dieter