VBA Macro Script on a Mac
How do I convert VBA script so it does the same thing on a Mac as it does in Microsoft Office?
We have a Word file that references an Excel spreadsheet, and uses some clever coding (done by someone else, I assume it's clever but it may not be) to make the document more interactive.
How can I do this please?
Hi Basilisk,
quoted from here http://en.wikipedia.org/wiki/VisualBasic_forApplications :
"Support for VBA in the Mac OS X version of Microsoft Office was dropped with the release of Microsoft Office 2008 for Mac. The official reason given was that VBA relied heavily on machine code written for the PowerPC architecture, and that rewriting this code for dual PowerPC/Intel architectures would have added another 2 years to the development of the suite. However, the office suite can to an extent be automated using AppleScript. In a press statement released on May 13, 2008, Microsoft's Macintosh Business Unit (Mac BU) announced that VBA will be returning in the next version of Office for Mac. Microsoft has also clearly stated that they have no plans to remove VBA from the Windows version of Office."
Regards
Stefan
Similar Messages
-
I am mac user and want to create Object in VBA macro. when i write "set objwrd=createObject("Word.Application")"… it returns "runtime error "492" can't create object". now what it alternative to create object for word in excel macro???
Any help here...
http://support.microsoft.com/kb/288117
http://www.macworld.com/article/1154785/welcomebackvisualbasic.html -
Hello guys,
I need to send keys to a window in the background, but I don't want it to pop up when I do it as it may cause some errors if I'm typing something at that moment. Is this possible?
The script I'm working on converts a spool to a pdf, but when the save as window comes up, the script stops recording because that is not a SAP screen, but a windows screen.
I was actually able to make it work by ending the script right before executing the transaction, then I used AppActivate and SendKeys to execute the transaction by pressing F8 and saving the file by pressing enter, but I still have these windows popping up while the macro is running, so, is it possible to have the SendKeys point to a specific application without it bringing it to the foreground?
Also, please note that I am new to programming, so I'm not familiar with all the functions.
Thanks in advance.Hello Jahir.
I had several similar request in past.
One requirement was mass convertion of PM orders printout from spool to PDF.
I found a solution where a small ABAP-Report (implemented in coding-area of an SQ02 infoset) Transfer spool data from my SAP user as PDF to a temp Folder on my local HDD.
Then I convert this PDF-files with an small application (pdf2txt.exe) to text-files. Where a small Excel VBA code got an specific text as identifier (PM order number).
So I have pdf-files with spoolnumber-naming and dedicated PM order number. So a small VBA code is renaming my files for better identification by enduser.
Another method was to write an small VBA macro which is able to identify Save-As dialogbox and fillin a specific filename and press 'Save' by using ESER32-API methods and functions.
As you are new with programming I guess both methods are a Little bit to complex for you.
LEt me know when you Need more Information for one of above used methods by me.
MAy you can give some more Details in which Transaction you will Trigger the spools.
Br, Holger -
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 -
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. -
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 -
Using AppleScript to Launch Excel VBA Macro
Using MS Office 2004 and AppleScript 1.9.3. I want to use AppleScript in MS Entourage to kick off a VBA macro in Excel. But no luck.
To test things, I created an Excel file ("test.xls") with a one-line VBA macro named "test." It just puts up a dialog box with the message "success." I'm calling it from A.S as follows (per the AppleScript Dictionary for Excel 2004):
tell application "Microsoft Excel"
run VB macro "hard disk:users:xxx:desktop:test.xls!test"
end tell
I get two successive error messages:
1. 'test.xls' cannot be accessed. The file may be read-only or you may be trying to access a read-only location."
2. "Microsoft Excel got an error: "hard disk:users:xxx:desktop:test.xls!test" doesn't understand the run VB macro message."
"test" file permissions are -rw-r--r-- and it is sitting right on the desktop.
FWIW, I did not remove the old Office vX yet, but renamed old Excel "Microsoft ExcelOld". I read on some other site that this may cause problems.
This has been endlessly frustrating. HELP!!??
SteveHi Steve,
Have you tried dealing with the return value from your macro? If you are invoking the MsgBox function in your test macro, you may need to allow the return value from MsgBox to pass thru back to AS. Something like :
set MyRetCode to run VB macro "Macintosh HD:Users:xxx:Desktop:test.xls!test"
(Note unless you've changed the hard drive name to "hard drive", the default boot drive name will probably be "Macintosh HD". Case does matter here)
I also suspect you'll need to have Entourage up as well in the full case of running a macro in Entourage from Excel (or the other way around). Hence, the command ActivateMicrosoftApp in the Excel dictionary may also be useful.
Second, you can have a macro, in a startup template, in Entourage call a macro in a startup template in Excel to accomplish what you want without going into AppleScript at all. This latter, VB-only, method will require a "Reference", as it's called in VBA, to be added to the TemplateProject in Entourage that points to the Excel macro you want to fire off. The added benefit of this latter method is that you will have access to the full range of VBA commands/options, rather than the smaller dictionary available in AS.
Ed
PB G4 Mac OS X (10.2.x) -
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 -
Using ms project 2007 and vba macro to list all the custom fields used in the project?
Hi,Using ms project 2007 vba macro, I would like to be able to list all the custom fields used in the project and their corresponding field names. e.g. let us say I create a calculated duration field and name it "expected duration" and the name
of the field I select is Duration1.
I am trying to write a macro that will list all the used custom fields such as the result would look like:
Duration1 ---> "expected duration"
Text1 ---> "anything"
Flag1 ---> "....."
Number1 ---> "..............."
Can anyone provide me with the solution?
Regards,
ChuckJohn,
I found this module, which provides the the list of custom fields used in the project but does not provide the name given to the field. Here below is the module and hope you could help me achieve this by modifying the macro to list the renamed field.
' MSP Checks all Custom Task Fields
Sub checkfields2()
'This macro will check and report out which custom task fields are used
'It requires Project 2002 and above as it relies on the GetField
'and FieldNameToFieldConstant methods which were not introduced until
'2002.
'It does not include resource fields, however it is a simple matter to
'do it by replacing the pjTask constant with pjResource.
'Copyright Jack Dahlgren, Oct. 2004
Dim mycheck As Boolean
Dim myType, usedfields As String
Dim t As Task
Dim ts As Tasks
Dim i, it As Integer
Set ts = ActiveProject.Tasks
usedfields = "Custom Fields used in this file" & vbCrLf
myType = "Text"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 30
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)) <> "" Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
myType = "Number"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 20
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)) <> 0 Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
myType = "Duration"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 10
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If Left(ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)), 2) <> "0 " Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
myType = "Cost"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 10
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)) <> 0 Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
myType = "Start"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 10
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)) <> "NA" Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
myType = "Finish"
usedfields = usedfields & vbCrLf & "--" & UCase(myType) & "--" & vbCrLf
For i = 1 To 10
mycheck = False
it = 0
While Not mycheck And (it < ts.Count)
it = it + 1
If Not ts(it) Is Nothing Then
If ts(it).GetField(FieldNameToFieldConstant(myType & i, pjtask)) <> "NA" Then
usedfields = usedfields & myType & CStr(i) & vbCr
mycheck = True
End If
End If
Wend
Next i
MsgBox usedfields
End Sub
This is what the module gives me. But I would like to have beside Text 1 the name that is shown as below. e.g Text1 is "Test".
Would you mind helping me achieve this?
Thanks in advance.
Chuck -
Business Objects Financial Consolidation - Excel Link and VBA Macros
Hi
We use the excel links of Business Objects Financial Consolidation V10.5 to import and export data to/from BOF and excel
We used VBA macros for the imports but do not know what VBA code is required to export - this code would include the package identifier that has to be selected in the window "Select item Package "
Can anyone help?Hello Chrisitne,
I am as well intersted by the same funtiont, did you find any answer?
Can I also ask you the VBA code for Import and Export if you have it?
Thank for your help! -
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 -
Copying Graphs and Pie Charts generated in Analysis View to Email item using Excel VBA Macro Code
Hi
I am currently working on an exce VBA macro code that would help me take snapshots of the Graphs and Pie charts generated in QC for a particular application and copy the same to an email item using excel VBA macro code.
I was able to write the code to create an email item. But I have no clue of how i can take snapshot of the graphs in Analysis View using excel VBA
Any help would be highly appreciated.
Thanks in Advance
Regards
Amituseramit,
You are in the consumer end products forum. You will also want to ask your question over at the Enterprise Business Community.
Click the plus sign (+) next to Discussion Boards to drop down all the options for servers, networking and any other professionally related problems.
http://h30499.www3.hp.com/ -
Hi Everyone!
We are using RoboHelp 7 (WebHelp) and MS Word 2007 on 3
machines. When selecting Printed Documentation and then selecting a
MS Word Template in the Printed Documentation Dialogue box, two of
the machines are able to print the documentation but an error
appears on the third machine. The error reads:
Waiting for VBA macros to be registered.
The applications were all installed in the correct order
according to the steps followed in another section on this site.
Anyone have any idea why this machine is receiving the error and
the other two are not/
Thanks.
BillMy guess is you need to change their macro security levels in
Word. -
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 -
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.
Maybe you are looking for
-
Mobile Account Home Folder syn error
I have a macbook pro client syncing its home folder with a mac mini with lion osx server. if i have iTunes running on the client, i get a home folder sync error that there was a problem syncing the file "iTunes library.itl". There home folder syn wor
-
Bluetooth stopped working after updating to iOS 6.1
Yesterday I update the software on my iPhone 4 to iOS 6.1 and after starting back up it would not find my bluetooth headset (that I've used for the last year). It will not find any bluetooth devices. Previously, it would locate my headset, iPad, an
-
I purchased an Ipod touch and when I tried to download 10.5, it stop loading and gave an error message, A program it needs to run is being used by another program. What will fix this problem. I am running Vista and this is my first time trying to d
-
How to increase the limit of 5 recently bookmarked folders
Hi, I saw this issue was raised several times over many years, but no solution as yet. When one adds a bookmark, firefox shows a very useful menu of the most recently added folders in the bookmark tree. It shows the last 5, but it would be wildly mor
-
Library items/javascript/paths
i am rebuilding a company website which uses a library item for their navigation: http://www.curiouspictures.com/ i am simply cleaning up the html and all unnecessary files/folders/etc. i have a new navigation layout that was built from this particul