VBA Macros Running Before BPC Routine is Done
Hello, All -
Working on converting our BPC 7.5 templates to version 10 and I'm having an issue with our custom VBA macro codes.
In our 7.5 system, all our input templates call custom VBA macro routines when certain SAP functions are done executing (i.e.: once a Refresh is done, execute this macro code). In 7.5, we have macro codes within the BEFORE_REFRESH, AFTER_REFRESH, BEFORE_EXPAND, and AFTER_EXPAND routines (note: our templates utilize the EvDRE function) and our custom macro codes would not run until the SAP function was done processing, which worked out perfectly however, it appears that something has changed in version 10 as all our macro codes are executing even though the SAP system is still processing in the background. I confirmed this behavior by placing a macro stopper next to certain macro codes and noticed that VBA is already at that point of executing those codes yet in the background, I can still see the 'processing' box. In 7.5, the processing box is already gone before the custom macro code executed. Not sure why the macros are executing when SAP is not done fully processing yet.
Has anyone encountered this type of behavior where custom VBA code is running prematurely before SAP is done processing?
In addition, it appears that SAP is no longer utilizing the Excel Status bar when certain processes are being executed. In 7.5, when a Refresh command was executed (for example), the status bar at the bottom of Excel would be updating (ready...retrieving data...calculating...formatting, etc...), which allowed us to check the Status bar for the word 'COMPLETED' as this was our indicator that SAP was done processing. In version 10, it appears that SAP has done away with the use of the Status bar because I am no longer seeing any kind of message flowing through down there when certain SAP functions are running. Correction: the only messages I see are 'Ready' and a brief moment of 'Calculate'. Because nothing is appearing on the status bar, our custom macro codes are not working in the new version.
Does anyone know if this feature no longer available in version 10?
Other Information:
+ Office 2010
+ BPC v10 on Microsoft platform
+ EPM Server version: 10.0 SP16
+ EPM Add-in version: 10.0 SP21 .NET 3.5; Build: 9094
Thanks,
Carlo
ADDENDUM:
7 hours later.... to log in was "random", replies mostly not possible, two different error massages, the nice "looking for" and a generic "too many server access try later" (<<in German, my humble translation)
there IS a lot of working going on, only explination...
hope, we read some "Announcement"...
it's late here, byebye, nitynite...
Similar Messages
-
Running multiple refreshes using a VBA macro
My company has just moved from BO 5.1.5 to BO XI 3.0 and I'm having some probelms running a VBA macro which extracts a large ammount of sales data to a text file. The macro uses an array and a For Each Next loop to enter variable details before the Refresh and then it downloads the text data, looping back to enter different Major Product values before the next refresh.
Here is the code I'm using in BO 5.1.5 and would like to rewrite as event based code ie BeforeRefresh/AfterRefresh.
Sub Main_Report()
Dim Docs As Documents
Dim Doc As Document
Dim Rep As Report
Dim Reps As Reports
Dim DocNum As Integer
Dim RepNum As Integer
Dim Location As String
Dim VarName As Variable
Dim DataPro As DataProvider
Dim FileName
Dim Majors
Dim MajorList
Dim Period
Dim Counter
MajorList = Array("001", "002", "003")
Period = Format(DateAdd("m", -1, Now), "YYYYMM")
Counter = 0
' Enter user prompt values into query for current period and YTD
For Each Majors In MajorList
Counter = Counter + 1
For i = 1 To ActiveDocument.Variables.Count
Set VarName = ActiveDocument.Variables(i)
If VarName.IsUserPrompt Then
Select Case VarName.Name
Case "Major Group"
ActiveDocument.Variables(i).Value = Majors
Case "Period"
ActiveDocument.Variables(i).Value = Period
End Select
End If
Next i
' Refresh the current report and save data
Application.Interactive = False
ActiveDocument.Refresh
Location = "
seausdcff015\saracm$\My Documents\Tables\Sales\"
Set Docs = Application.Documents
Set Reps = ActiveDocument.Reports
' Export each report as "TXT" files from current document
Set Doc = Docs.Item(1)
FileName = Location & Doc.Name & "_" & Counter & ".txt"
Set DataPro = ActiveDocument.DataProviders.Item(1)
Call DataPro.ConvertTo(boExpAsciiTab, 1, FileName)
Application.Interactive = True
Next
End Sub
Can you please help. Cheers Milos.A coworker found this thread on asktom:
http://asktom.oracle.com/pls/asktom/f?p=100:11:861518416236107::::P11_QUESTION_ID:10498431232211
It sort of details a similar (if not the same) method to that above. -
Run Data Package from custom Menu00F9/VBA macro
HI guys,
I have a problem:when creating VBA macro to run Data Package.
I get the pop-up error "400" . This is the VBA code I'm using:
Application.Run "MNU_eDATA_RUNPACKAGE(""Opening""; ""/CPMB/Opening_Balances""; ""Company""; ""Financial Processes"")"
Have you any suggestion for me?
Thanks
Marco UccelloHi Marco,
I'm guessing by prompts you mean user inputs for Entity, Category, Time etc.
These are controlled by the dynamic script associated with the data package.
If you go to the menu eData -> Organise Packages then select a package and go through :
Modify Package -> View Package -> Advanced
You should get to the Data Manager Dynamic Script window.
The following is an example of what should be in here. This is taken directly from the SAP How to Guide "How To Pass Dynamic Parameters to script logic.pdf"
It's the "PROMPT" parts at the start that control the prompts shown to the user (and passed to the data package) :
PROMPT(SELECTINPUT,,,,"%ENTITY_DIM%,%CATEGORY_DIM%,%CURRENCY_DIM%,%TIME_DIM%")
PROMPT(TEXT,%WS_PERCT%,"Input W/S Percent in decimals",)
PROMPT(TEXT,%EXP_PERCT%,"Input Exp. Percent in decimals",)
INFO(%EQU%,=)
INFO(%TAB%,;)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,TAB,%TAB%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,EQU,%EQU%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,SUSER,%USER%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,SAPPSET,%APPSET%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,SAPP,%APP%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,SELECTION,%SELECTION%)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,LOGICFILENAME, INCREASEPERCENTAGE.LGF)
TASK(ZBPC_PROMPT_EXP_RUN_LOGIC,REPLACEPARAM,WS_PERCT%EQU%%WS_PERCT%%TAB%EXP_PERCT%EQU%%EXP
_PERCT%)
If you paste that in exactly it will resolve into the right package information which can be seen one step back (via Modify Package -> View Package).
You can modify the prompts as appropriate for the script you are running - the one above from the how to guide has two inputs for percentages which are used within the associated script logic calculation.
Hope this helps.
Thanks.
Bradley Newcombe. -
Starting Edata From a VBA Macro
I am using the
Application.Run "MNU_eDATA_SELECTPACKAGE", "GL_Data_Extract", "System Files/GL_Data_Extract.dtsx", "Company", "Data Management"
It works fine as long as you start edata first. Is there a way that I can start edata from a VBA macro. That way the user does not have to sign into BPC and hit edata before running the macro.
Please let me know if there is a VBA command that will do this?
Thanks
PhilAs I understand the issue you are trying to use MNU_eDATA_SELECTPACKAGE in a VBA macro.
As stated here and elsewhere -- that is not possible but I have a workaround that seems to work OK.
In our case we are trying to use a Button to both send the data and then kickoff a DataManager macro.
So the macro we assigned to the button is as follows:
Sub SendandStartPackage()
Application.Run ("MNU_eSUBMIT_REFSCHEDULE_BOOK_CLEARANDREFRESH")
Range("J61").Select
End Sub
Then in cell J61 we put the EVMNU as follows:
=EVMNU("MNU_eDATA_SELECTPACKAGE","run DM","Import MasterData,/CPMB/IMPORT_MASTER,Company,Data Management")
Now when we click the button, the first macro runs and then the cell J61 is selected which starts the second macro.
I have not tested this extensively but it worked when I tried it.
Note: This is NW version syntax. -
How Can I Schedule a Deski Report in Infoview that has a VBA Macro
Hi experts,
i've made a report that has a vba Macro. I published it in infoview. If I launch it manually (clicking on the refresh button) the macro works normaly. If I schedule it the macro doesn't work.
What can I do?
Is it possible to make a program that simulate the opening and click on the refresh button?
Or i there is another solution?
Here is my Macro:
Private Sub Document_AfterRefresh()
Dim filtervar As Variant
Dim filterText, Filter As Long
Dim DocName, NewName As String
Dim Pathing, TodaysDate As String
Dim folderName As String
TodaysDate = Format(Date, "DDMMYYYY")
Pathing = "
Ktsdwh0\c$\OutputBO\"
DocName = ThisDocument.Name
filterText = "Dpre Cod Produttore"
filtervar = ThisDocument.Evaluate("=<" & filterText & ">", boUniqueValues)
For Each sepval In filtervar
Filter = sepval
For n = 1 To ThisDocument.Reports.Count
Call ThisDocument.Reports(n).AddComplexFilter(filterText, "=<" & filterText & "> = " & Filter)
ThisDocument.Reports(n).ForceCompute
Next n
MkDir (Pathing & Filter & "\")
NewName = Pathing & Filter & "\" & Filter & "-" & TodaysDate & "-" & DocName 'for Prova_Prod.rep
' NewName = Pathing & Filter & "-" & TodaysDate & "-" & DocName 'for Prova_Prod.rep
ThisDocument.ExportAsPDF (NewName) 'to Save as PDF
Next
For n = 1 To ThisDocument.Reports.Count
Call ActiveReport.AddComplexFilter(filterText, "=<" & filterText & "> = <" & filterText & ">")
' To delete a Complex Filter, you set it equal to itself...
ActiveReport.ForceCompute
Next n
End Sub
Please Help!
Best regards
CamilloHi Philippe,
If you are using Windows 2003 with SP2 then it might be the issue as already logged for BOXIR2.
You can test the issue by using only Windows 2003 without SP2.
In case your operating system is only windows 2003 then following information and code might be helpful for you to resolve the issue.
There are a number of things to check when setting up a macro to work through Infoview or scheduled. The first thing is that the macro needs to be triggered to run. This is done by putting a call to the macro in the Document_BeforeRefresh or the Document_AfterRefresh event handler.
The report server and job server are designed to process one report at a time. Through a macro it is possible to open more than one report, and do various processing with those additional reports. Since the report and job servers are not designed to process more than one report, your macro should not open an additional report.
The fact that only one report is processed at a time also affects the syntax you should use when referring to a document or report object. In the DeskI client you can use the ThisDocument object to refer to the report which is running the macro. You can also use the ActiveDocument object to refer to the report that is currently displayed. Most of the time these two objects will point to the same report. When the report server or job server process a report there would never be the possibility for a different report to be active, so the ActiveDocument object does not exist. This also applies to the ActiveReport object. Instead of using ActiveDocument your macro code should use the ThisDocument object. Instead of using the ActiveReport object you should use ThisDocument.Reports.Item(1) to refer to this first report tab in a report.
These items are the most common issues that will cause a macro not to run through Infoview or when scheduled. The best way to debug a macro which is not working in either of those places is to include code which will log the macro's progress to a file. This makes it easy to determine exactly which line of code is causing issues so that it can potentially be corrected.
#Region u201CWeb Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myInfoStore As InfoStore
Dim myEnterpriseSession As EnterpriseSession
myInfoStore = CType(Session("InfoStore"), InfoStore)
myEnterpriseSession = CType(Session("EnterpriseSession"), EnterpriseSession)
Dim DOCUMENT_NAME As String = "document_name"
Dim query As String = "Select SI_ID, SI_NAME, SI_SUBJECT, " _
& "SI_COMMENTS, SI_OWNER From CI_INFOOBJECTS Where SI_KIND = 'FullClient' " _
& "AND SI_INSTANCE=0 AND SI_NAME='" + DOCUMENT_NAME + "'"
Dim myInfoObjects As InfoObjects = myInfoStore.Query(query)
Dim myInfoObject As InfoObject = myInfoObjects(1)
Dim myDeskiDoc As FullClient = CType(myInfoObject, FullClient)
Dim mySchedulingInfo As SchedulingInfo = myDeskiDoc.SchedulingInfo
mySchedulingInfo.Type = CeScheduleType.ceScheduleTypeOnce
mySchedulingInfo.RightNow = True
Dim myFullClientFormatOptions As FullClientFormatOptions = myDeskiDoc.FullClientFormatOptions
myFullClientFormatOptions.Format = BusinessObjects.Enterprise.Desktop.CeFullClientFormat.ceFullClientFormatFullClient
myInfoStore.Schedule(myInfoObjects)
End Sub
End Class
I hope this will help you.
Regards,
Sarbhjeet Kaur -
Blocked Error Messages and VBA Macros
I have a client who is in the process of migrating their Essbase 6 VBA macros to 7. Will the error messages regarding the different APIs impede upon the macros running correctly and fully?<BR><BR>I don't think this would be the case but wanted to double-check...
Hello.
I have created an dynamic Excel VBA template which include as well this log-function.
Public Function Create_Log(lngRow As Long, lngCol As Long, strLog As String)
Dim lngCounter As Long
Dim lngLast_Col As Long
Dim strLog_Line As String
lngCounter = lngRow
lngLast_Col = lngCol
strLog_Line = strLog
If ThisWorkbook.Sheets("SAP_PROCESS").Cells(lngCounter, lngLast_Col).Value = "" Then
ThisWorkbook.Sheets("SAP_PROCESS").Cells(lngCounter, lngLast_Col).Value = strLog_Line
Else
ThisWorkbook.Sheets("SAP_PROCESS").Cells(lngCounter, lngLast_Col).Value = ThisWorkbook.Sheets("SAP_PROCESS").Cells(lngCounter, lngLast_Col).Text & Chr(10) & strLog_Line
End If
End Function
In my process code I use this function like this:
'Log
If Session.FindById("wnd[0]/sbar").Text <> "" Then Create_Log lngCounter, lngLast_Col, Session.FindById("wnd[0]/sbar").Text
We can check as well if we receive an error (sy-msgty = 'E')
If Session.FindById("wnd[0]/sbar").messagetype = "E" Then Create_Log lngCounter, lngLast_Col, Session.FindById("wnd[0]/sbar").Text
Hope this give you an idea how to handle this.
Best regards,
Holger -
Powershell Variable from Excel.VBA Macro
Hi Guys!
I don't know if what i'm asking you is achievable.
I've learned how to pass variables/arguments from powershell to Excel/VBA Macro but i need to do the opposite thing.
This is an example of what i want:
Powershell
Excel/VBA Macro
$Input=1 ----------------------------------------------------------------> Sub Macro(input)
$excel.Run("Macro",$Input)
Output=input +6
$output (Expected 7) <---------------------------------------------------- return Output
I don't know how to do this can you help me please?
AOk guys those are the script.
Macro:
Sub CreatePWD()
Dim PWD As String
Dim i As Integer
Dim Max As Integer
Dim F1 As Worksheet
Set F1 = ThisWorkbook.Worksheets("Foglio1")
Max = F1.Range("A1").Value
For i = 1 To Max
If Int((2 * Rnd) + 1) = 1 Then
PWD = PWD & Chr(Int((90 - 65 + 1) * Rnd + 65))
Else
PWD = PWD & Int((9 - 0 + 1) * Rnd + 0)
End If
Next i
MsgBox PWD
End Sub
Powershell:
$Excel = New-Object -ComObject excel.application
$Excel.visible=$false
$Version = "C:\Users\Alberto Corona\Desktop\Cartel1.xlsm"
$WorkBook= $Excel.workbooks.open($Version)
$WorkSheet= $WorkBook.worksheets.item(1)
$WorkSheet.cells.item(1,1)=5
$Excel.Run("CreatePWD")
$WorkBook.save()
$WorkBook.close()
$Excel.quit()
The result of macro is like "52UT7" i want a variable in powershell called $PWD that contain the value of the macro.
Hope the problem is clear now.
Thanks
A -
Unknown macro running on CTRL+ALT+D
I have an unknown macro running when I press CTRL+ALT+D on PS.7 (to try to feather my selection). That keyboard shortcut used to work perfectly before. I have no idea what this macro is and if it is running off Vista or PS. The macro triggers a series of tool in PS. At the end, the Notes tool is selected.
How to I troubleshoot something like that?
Thanks for any advice.
PascalOn second thought in ps 7 i don't think actions can have that shortcut and i'm not sure you can asign that shortcut with a script if you have scripting support installed for ps 7 unless someone asigned a shortcut to one of the sample VB
scripts that comes with scripting support.
Do you have the optional scripting plugin for photoshop 7 installed?
Do you have a mouse driver or system utility that can assign shortcuts to particular programs (usually using a macro that one edits)?
Just to be clear we are talking about photoshop 7? -
Need Help Converting a VBA Macro to AppleScript 2.1.2 for Outlook 2011
Hello AppleScript Experts:
Can somebody help me convert the below VBA Macro to an equivalent AppleScript 2.1.2 for Mac Outlook 2011 (Version 14.1.3)
I have a VBA macro program that pops message box when somebody sends an email to an external email address outside of the business domain name. I have deployed the below on WINDOWS 7 MS OFFICE OUTLOOK 2007/2010 and it's
working successfully.
I have few users using MAC Outlook 2011 v.14.0.1 & 14.1.3. I need to deploy the same application for MAC users.
Here is the program...
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objRecipient As Outlook.Recipient
Dim strExternalEmailAddress As String
Dim strInternalEmailAddress As String
Dim oRecip As Outlook.Recipient
Dim oEU As Outlook.ExchangeUser
Dim oEDL As Outlook.ExchangeDistributionList
Set objRecipients = Item.Recipients
strTemp = ""
For Each objRecipient In objRecipients
Set oRecip = Application.Session.CreateRecipient(objRecipient.Address)
If InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
Else
oRecip.Resolve
If oRecip.Resolved Then
Select Case oRecip.AddressEntry.AddressEntryUserType
Case OlAddressEntryUserType.olExchangeUserAddressEntry
Set oEU = oRecip.AddressEntry.GetExchangeUser
If Not (oEU Is Nothing) Then
End If
Case OlAddressEntryUserType.olExchangeDistributionListAddressEntry
Set oEDL = oRecip.AddressEntry.GetExchangeDistributionList
If Not (oEDL Is Nothing) Then
End If
Case Else
If (objRecipient.Type = 1) And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 1) And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 2) And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 2) And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
End If
End Select
Else
If InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
End If
End If
End If
Next
If Len(strExternalEmailAddress) > 0 Then
If MsgBox("You are about to send this email message to one or more individuals outside of COMPANY. Before you send the message," & _
" please review the list below and confirm that you have addressed the message to the intended recipients." & vbCrLf & strExternalEmailAddress & vbCrLf & _ "Please click 'Yes' to send the message or 'No' to make changes to the recipients.", vbYesNo + vbDefaultButton2) = vbNo Then
Cancel = True
End If
End If
End SubHello AppleScript Experts:
Can somebody help me convert the below VBA Macro to an equivalent AppleScript 2.1.2 for Mac Outlook 2011 (Version 14.1.3)
I have a VBA macro program that pops message box when somebody sends an email to an external email address outside of the business domain name. I have deployed the below on WINDOWS 7 MS OFFICE OUTLOOK 2007/2010 and it's
working successfully.
I have few users using MAC Outlook 2011 v.14.0.1 & 14.1.3. I need to deploy the same application for MAC users.
Here is the program...
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objRecipient As Outlook.Recipient
Dim strExternalEmailAddress As String
Dim strInternalEmailAddress As String
Dim oRecip As Outlook.Recipient
Dim oEU As Outlook.ExchangeUser
Dim oEDL As Outlook.ExchangeDistributionList
Set objRecipients = Item.Recipients
strTemp = ""
For Each objRecipient In objRecipients
Set oRecip = Application.Session.CreateRecipient(objRecipient.Address)
If InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
Else
oRecip.Resolve
If oRecip.Resolved Then
Select Case oRecip.AddressEntry.AddressEntryUserType
Case OlAddressEntryUserType.olExchangeUserAddressEntry
Set oEU = oRecip.AddressEntry.GetExchangeUser
If Not (oEU Is Nothing) Then
End If
Case OlAddressEntryUserType.olExchangeDistributionListAddressEntry
Set oEDL = oRecip.AddressEntry.GetExchangeDistributionList
If Not (oEDL Is Nothing) Then
End If
Case Else
If (objRecipient.Type = 1) And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 1) And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 2) And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf (objRecipient.Type = 2) And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & oRecip & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
End If
End Select
Else
If InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") = 0 Then
strExternalEmailAddress = strExternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strExternalEmailAddress = strExternalEmailAddress & vbCrLf
ElseIf InStr(1, oRecip, "@") > 0 And InStr(1, oRecip, "company.org") <> 0 Then
strInternalEmailAddress = strInternalEmailAddress & objRecipient.AddressEntry & " - " & objRecipient.Address & "; "
strInternalEmailAddress = strInternalEmailAddress & vbCrLf
End If
End If
End If
Next
If Len(strExternalEmailAddress) > 0 Then
If MsgBox("You are about to send this email message to one or more individuals outside of COMPANY. Before you send the message," & _
" please review the list below and confirm that you have addressed the message to the intended recipients." & vbCrLf & strExternalEmailAddress & vbCrLf & _ "Please click 'Yes' to send the message or 'No' to make changes to the recipients.", vbYesNo + vbDefaultButton2) = vbNo Then
Cancel = True
End If
End If
End Sub -
Schedule a VBA macro based DeskI Report.
Hi,
We have a requirement to schedule a VBA macro based report via CMC and Infoview and I would like to acheive the below. Please help.
1) To save the report output as CSV file after refresh in Xi R2 and I have the following code, which runs fine if I run manually, but if I schedule it in Xi R2, it does not run.Please help.
Private Sub Document_AfterRefresh()
Dim boDP As busobj.DataProvider
Set boDP = ThisDocument.DataProviders.Item(1)
OUTPUT_FILE_CSV = TARGET_FILE_DIR & OUTPUT_FILE_NAME & Format(Now, "YYYYMMDD") & "_" & Format(Now, "hhnnss") & ".csv"
Call boDP.ConvertTo(5, 1, OUTPUT_FILE_CSV)
End Sub
The OUTPUT_FILE_CSV & TARGET_FILE_DIR are declared as global varilable. Please help.
2) A prompt to be filled and the following syntax works fine when I run the macro manually. But does not work when I schedule in CMC (Variable prevented report to refersh error)..
Private Sub Document_BeforeRefresh(Cancel As Boolean)
newfromdate = DateAdd("M", -4, DateValue(Now))
Application.Variables.Item("BOL Date").InterpretAs = boStringVariable
Application.Variables.Item("BOL Date").Value = newfromdate
End Sub
Please advice.
Thank You.Hi Sundaresan,
Following are the important points related to scheduling deski report containing VBA macro:
1. BusinessObjects XI Release 2 supports macros in
Desktop Intelligence in InfoView, both when viewing or
scheduling the document, but with caveats.
2. There are slight differences in the execution flow when
viewing a Deski in InfoView as opposed to viewing on
the Desktop Intelligence client.
3. A restriction on scheduling documents is that the
scheduler can only open one document at a time u2013 so
if you have macros that try and access another Deski
document, it will fail.
4. Whether a macro executes successfully or not would
depend on the functionality used in the macro.
May i know which service pack you are using,as this is known issue and it works fine with BOXI R2 SP2 and higher versions.
I hope this helps you.
Regards,
Snehal -
Hi All ,
In most of my layouts the lead column is dynamic .For which I need to define VBA MACRO so that excel formulae are calculated properly .
I am not that conversant with macro of excel .Can any
body help me how to start with .If any documentation is available on how to create a macro , it will be most welcome .
Regards
manojHi
Consider that in BPs with Excel macro you don't modify the data in the cube but only on the excel presentation folder
TO modify and write the proper data in cube and to save them you should use fox formulas.
About BEX Macro integration check this link
http://www.bwexpertonline.com/downloads/boeke04.doc
BEx with VBA Code
Embedded VBA code in Workbook to start BEX toolbar
hope this helps.
Andreas -
Runtime Error '109' - Business Object 6.5 - VBA macro
I am getting the same Runtime error '109' when trying to run my old reports(6.5) which have VBA Macros with the new XI 3.1 DeskI. Here's what I did:
1) Installed BO XI 3.1 client Tools on a machine which has BO 6.5 client tools
2) Opened the .rep in the XI 3.1 DeskI. CLick OK when it warns you that it is a earlier version and If you want to convert to new version.
Then when i try to run the report i get this error. The same .rep runs just fine with 6.5 Full Client.
Any Ideas guys? Am I missing any references or something ?
Thanks
Edited by: Larry Sherman on Aug 14, 2009 8:28 PMLarry, I have seen some instances of VBA code not running in the new Deski version, possibly some calls are different. You will want to open an SAP incident for eng. to take a look at the VBA code.
-
How to guarantee that an iView in the framework will run before the TLN?
Hello,
I have developed an iView that I would like to put in the framework. I would like to guarantee that :
1. This iView will run before the top level navigation one runs.
2. This iView will run only once per session.
Any suggestions...?
RoyHi Roy,
ad 1)
The method is there. Maybe your wizard in NWDS is not creating it automatically. After all - it's just a wizard.
The method is already implemented in your super class. Just type 'super.' and your IDE will show you the method.
Now overwrite it. And implement your code.
That's Java. Cool!
ad 2)
Whenever you send a request to the portal a component called 'Request Manager' is involved.
This Request Manager builds up the whole structure of your page, the so called POM-tree.
(POM stands for 'Portal Object Model').
This tree contains all iViews the page is build of.
The iViews may be structured (i.e. within pages). That's why the POM is a tree and not just a list.
The Request manager determines all the iViews and their structure before they get rendered/called/processed.
If all iViews are determined their doOnNodeReady Methods and their doOnPOMReady methods are called. See the link contained in my first answer
They are called one by one as they are stored hirarchically in the tree.
If all doOnNodeReady and all doOnPOMReady Methods have been processed, the rendering of the iViews starts
This is done by calling the doContent method.
HTH,
Carsten -
My java program runs fine even if i don't specify access specifier of class
Hi,
My java program runs fine even if i don't specify access specifier of class as public .
Then why do they say that atleast one class should be specified as public.
please help.public access specifier is the default access
specifier
so if you dont give the access specifier before the
class name it is not wrong.I think that you are wrong. The default specifier is package or "package-private".
See here:
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
Message was edited by:
petes1234 -
VBA not responding in BPC Book Publishing
Is there a trick to running VBA inside of the BPC book publishing functionality? I cannot get excel VBA to execute when using the BPC publishing to generate a pdf file.
Any ideas?
Thanks,
Cary SchulzYou may need to check the BPC Notes or lob a question to the BPC support team, but I do not believe that VB code will execute during the book publication process. My general advice, which many designers do not appreciate, but it is generally not optimal to use VB code in the excel templates during ordinary BPC implementations. The code often slows the template processes, and causes headaches for a customer to troubleshoot.
But please check with Support for a confirmation of the use with BPC Publishing.
Maybe you are looking for
-
Can not see the menu of New Business Components Package in jdeveloper
I am just follow the developer guide. and when I create the Business Components Package, the guide said that ======================================== In the JDeveloper Navigator, select the OA Project where you want to create your package. From the m
-
Customer support are the worst
Hello to all. I have HP Pavilion Elite that lost the driver for the bluetooth. I called the tech support to get the name of the company who made the bluetooth driver. I was transfered to India. They guy refused to tell me who is the name of the c
-
Creating Sequential List workflow in VS 2012
Hi, How to create a sequential workflow in VS 2012 ? I have created sequential workflow earlier in VS 2010, and I was able to do coding on the cs page. Now in SharePoint 2013, I can see the workflow.xaml file and elements.xml file only. I am looking
-
Help with Scrolling Text Item.
Hi , need help with making a text item scrollable. i.e. A field is 30 characters and i can only display 10 characters, now what I would like is a scroll bar under the text item. Is this possible. I am using Forms 5. Thanx for any help. Pankaj Patel.
-
Comma separated output into columns
Hi, I've the following Query : select ParameterValue FROM Event.vEvent join event.vEventParameter on event.vEventParameter.EventOriginId=event.vEvent.EventOriginId where EventNumber=0 which gives the following output in a single column: VSSDATA_F