Excel macro example
Hi,
I have found in LabVIEW in the Menu Help --> Find Example-->Excel Macro Example a possibility to crate an Excel sheet with a chart. But I cannot find the Sub VI (Set Cell Value with Range.vi) in this example. Can someone send it to me?
Somebody posted the examples recently in this http://forums.ni.com/ni/board/message?board.id=170&message.id=212255&query.id=467035 thread
Similar Messages
-
Hello All,
I am having a challenge in implementing a macro in excel that plots the waveform graph. I have made use of the LabVIEW Excel macro Example with modifications. The challenges are:
1. In Excel, both x and y values do not start from zero.
2. The scale of the graph is narrow
3. The program should stop running after the log switch is pressed and the graph is plotted in excel.
Note: project.xls sheet should be in same directory as VI before running.
Thanks.
Attachments:
ExcelExamples.llb 97 KBmaxidivine wrote:1. In Excel, both x and y values do not start from zero.
I'm not sure I understand what you mean by this.
2. The scale of the graph is narrow
I don't understand what this means either. I assume you're referring to the fact that you're only seeing a "zoomed in" version of the graph. The reason for this is that the macro in the workbook has the range to graph hard-coded in it. It's only plotting the first six rows. You can either modify the macro so it determines the range based on the data (see Excel help on how to write macros), or have it so that you feed in the number of rows as an argument.
3. The program should stop running after the log switch is pressed and the graph is plotted in excel.
It should already do this, and it does. I suspect the problem you're having is when you're running it with the large array. Writing out 25000 cells one at a time using ActiveX will take forever.
As an aside: What's wrong with the LabVIEW graphs? -
Hola
Saludos
Mi duda es como puedo cambiar el macro y el excel que debe abrir el EXCEL MACRO EXAMPLE.VI
PORFAVOR AYUDENEM
gracias por la atencion
¡Resuelto!
Ir a solución.Hola Ramos2
Buen día!
Para modificar por ejemplo el libro de excel debes cambiar la ruta (la ruta por default es la misma ubicación en la que se encuentra en la misma carpeta del VI; pero esta se puede modificar por una rutar constante); lo mismo para elegir el macro que deseas correr
Exito en tu aplicación -
Hey there, I am a chemist so Labview and programming aren't exactly my strong point.
We have a Labview program that we run to control and automated valve manifold that has a thermocouple and pressure transducer that displays the temperature and pressure on the "front panel" of the labview file we run. The temperature and pressure of the manifold changes in real time while the labview is running. We must attach a sample to the manifold, take the pressure and temperature, then record those values in an excel spread sheet, one at a time.
What I would like to do is make a key board macro in excel to automatically type in the current read out of the temperature (and another for pressure) into which ever selected excel cell you are on, so that you don't have to switch back to the labview window to look at it. I have a very basic understanding of macros in VB but I don't know how to get the labview to make the read outs available for the excel macros to find it.
Thanks for the help, Here is a screen shot of the block layout of the program.
Attachments:
back.JPG 79 KBWhy not have LV put the data in Excel for you? You can use Actvie X to do this. There is plenty of information on the forum and knowledge base on how to use Active X and reporting to Excel. Plus you have the example finder. Do you have the Report Generation Toolkit? LV7 is quite old, so I don't know if this is an option for you.
Reese, (former CLAD, future CLD)
Some people call me the Space Cowboy!
Some call me the gangster of love.
Some people call me MoReese!
...I'm right here baby, right here, right here, right here at home -
Export to Excel - Macro problems
I have moved this to the Discoverer forum. Exporting to Excel - Macro Problems
Message was edited by:
user385142Hello Denes.
Excuse me for send you a message in this way , but I dont find other way to contact with you.
Im using the export_excel_pkg, and really it work good.
I have only one problem, I tell you.
When, in one item, data is very long and numeric, by example a EAN code, without any class of format, by default it give me the value ###, Im studing the package and trying to resolve this, but if you can send me any idea it can help me a lot.
Thanks in advanced.
You are doing a great work for us. -
Excel Macro to click on publish button of Master Data Services Add-in
I am creating an excel macro to perform extra validation and defaults whilst the user is editing the MDS entity. It will be added as a workbook add-in. At the end of the macro I would like to be able to launch publish. The MDS addin is a ribbon.
Does anyone have an example of how I can simulate a click on the Publish button or what the call that the button does is?
David RosenederHi David
here is a code sample to add mds actions with excel Buttons
you can find the connection class separately, by downloading my sample project (C#) on codeplex :
http://mdsmanager.codeplex.com
(I use this MDS connection class for many projects)
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using System.Xml;
using System.Collections.ObjectModel;
using Common.ServiceReference1;
namespace ExcelToMDS
public partial class Sheet1
public const string mdsEndPoint = "http://yourMDSEndpointUrl:4040/Service/Service.svc";
ServiceClient c = null;
International intl = new International();
OperationResult or = new OperationResult();
Metadata md = null;
private void Sheet1_Startup(object sender, System.EventArgs e)
using (var c = Common.MDS_WSConnect.CreateMdsProxy("yourdomain", "yourlogin", "yourpassword", mdsEndPoint))
c.Open();
International intl = new International();
OperationResult or = new OperationResult();
md = GetMetaData(intl, ref or);
cbModels.Items.Clear();
foreach (Model mo in md.Models)
cbModels.Items.Add(mo.Identifier);
cbModels.DisplayMember = "Name";
cbEntities.Visible = true;
private Metadata GetMetaData(International intl, ref OperationResult or)
MetadataResultOptions mro = new MetadataResultOptions();
MetadataSearchCriteria msc = new MetadataSearchCriteria();
msc.Models = new Collection<Identifier>() { new Identifier() };
msc.Versions = new Collection<Identifier>() { new Identifier() };
msc.SearchOption = SearchOption.UserDefinedObjectsOnly;
mro.Models = ResultType.Identifiers;
mro.Versions = ResultType.Identifiers;
cbModels.Items.Clear();
Metadata md = c.MetadataGet(intl, mro, msc, out or);
return md;
private void Sheet1_Shutdown(object sender, System.EventArgs e)
if (c != null && c.State != System.ServiceModel.CommunicationState.Closed)
c.Close();
#region VSTO Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
this.btGetMDSData.Click += new System.EventHandler(this.btGetMDSData_Click);
this.btGetTransactions.Click += new System.EventHandler(this.btGetTransactions_Click);
this.btUpdateAttribute.Click += new System.EventHandler(this.btUpdateAttribute_Click);
this.cbModels.SelectedIndexChanged += new System.EventHandler(this.cbModels_SelectedIndexChanged);
this.cbMembers.SelectedIndexChanged += new System.EventHandler(this.cbMembers_SelectedIndexChanged);
this.cbEntities.SelectedIndexChanged += new System.EventHandler(this.cbEntities_SelectedIndexChanged);
this.cbVersions.SelectedIndexChanged += new System.EventHandler(this.cbVersions_SelectedIndexChanged);
this.cbAttributes.SelectedIndexChanged += new System.EventHandler(this.cbAttributes_SelectedIndexChanged);
this.btReverseTran.Click += new System.EventHandler(this.btReverseTran_Click);
this.Shutdown += new System.EventHandler(this.Sheet1_Shutdown);
this.Startup += new System.EventHandler(this.Sheet1_Startup);
#endregion
private void btGetMDSData_Click(object sender, EventArgs e)
Cursor.Current = Cursors.WaitCursor;
DisplayEntityMembers(c);
Cursor.Current = Cursors.Default;
private void DisplayEntityMembers(ServiceClient c)
EntityMembers em = GetEntityMembers(c);
if (em != null)
Member[] members = em.Members.ToArray();
((Excel.Range)this.Cells[2, 2]).Value2 = "MemberName";
((Excel.Range)this.Cells[2, 3]).Value2 = "AttributeName";
((Excel.Range)this.Cells[2, 4]).Value2 = "AttributeValue";
for (int i = 0; i < members.Length; i++)
((Excel.Range)this.Cells[i + 3, 2]).Value2 = members[i].MemberId.Name;
int cptAtt = 0;
foreach (Common.ServiceReference1.Attribute att in members[i].Attributes)
((Excel.Range)this.Cells[i + 3, cptAtt + 3]).Value2 = att.Identifier.Name.ToString();
((Excel.Range)this.Cells[i + 3, cptAtt + 4]).Value2 = att.Value != null ? att.Value.ToString() : "";
cptAtt += members[i].Attributes.Count();
private EntityMembers GetEntityMembers(ServiceClient c)
if (cbModels.SelectedItem != null && cbEntities.SelectedItem != null && cbVersions.SelectedItem != null)
EntityMembersGetCriteria emGetCrit = new EntityMembersGetCriteria();
emGetCrit.ModelId = new Identifier() { Name = ((Identifier)cbModels.SelectedItem).Name };
emGetCrit.EntityId = new Identifier() { Name = ((Identifier)cbEntities.SelectedItem).Name };
emGetCrit.VersionId = new Identifier() { Name = ((Identifier)cbVersions.SelectedItem).Name };
//ExportView[] ev = c.ExportViewListGet(new International(), out or);
EntityMembersInformation emi = new EntityMembersInformation();
emGetCrit.DisplayType = DisplayType.CodeName;
EntityMembers em = c.EntityMembersGet(intl, emGetCrit, out emi, out or);
return em;
else
MessageBox.Show("Please select model, version and entity in comboboxes");
return null;
private void btGetTransactions_Click(object sender, EventArgs e)
if (cbModels.SelectedItem != null)
this.Rows.Clear();
using (var c = Common.MDS_WSConnect.CreateMdsProxy("yourdomain", "yourlogin", "yourpassword", mdsEndPoint))
c.Open();
DisplayTransactions(c);
c.Close();
else
MessageBox.Show("Please select Model in combos");
private void DisplayTransactions(ServiceClient c)
string versionName = "VERSION_1";
if (cbVersions.SelectedItem != null)
versionName = ((Identifier)cbVersions.SelectedItem).Name;
TransactionSearchCriteria trSrchCrit = new TransactionSearchCriteria();
trSrchCrit.ModelId = new Identifier() { Name = ((Identifier)cbModels.SelectedItem).Name };
//trSrchCrit.EntityId = new Identifier() { Name = ((Identifier)cbEntities.SelectedItem).Name };
trSrchCrit.EntityId = new Identifier();
trSrchCrit.VersionId = new Identifier() { Name = versionName };
//ExportView[] ev = c.ExportViewListGet(new International(), out or);
EntityMembersInformation emi = new EntityMembersInformation();
int totalTranCount = 0;
Collection<Transaction> transactions = new Collection<Transaction>();
OperationResult or = c.TransactionsGet(intl, trSrchCrit, out totalTranCount, out transactions);
int startY = 4;
int startDataY = startY + 1;
int startX = 4;
((Excel.Range)this.Cells[startY, startX]).Value2 = "TransactionID";
((Excel.Range)this.Cells[startY, startX + 1]).Value2 = "Code";
((Excel.Range)this.Cells[startY, startX + 2]).Value2 = "Name";
((Excel.Range)this.Cells[startY, startX + 3]).Value2 = "MemberType";
((Excel.Range)this.Cells[startY, startX + 4]).Value2 = "Date";
((Excel.Range)this.Cells[startY, startX + 5]).Value2 = "AttributeName";
((Excel.Range)this.Cells[startY, startX + 6]).Value2 = "PriorValue";
((Excel.Range)this.Cells[startY, startX + 7]).Value2 = "NewValue";
for (int i = 0; i < transactions.Count(); i++)
((Excel.Range)this.Cells[i + startDataY, startX]).Value2 = transactions[i].Id.ToString();
((Excel.Range)this.Cells[i + startDataY, startX + 1]).Value2 = transactions[i].MemberId.Code;
((Excel.Range)this.Cells[i + startDataY, startX + 2]).Value2 = transactions[i].MemberId.Name;
((Excel.Range)this.Cells[i + startDataY, startX + 3]).Value2 = transactions[i].MemberId.MemberType.ToString();
((Excel.Range)this.Cells[i + startDataY, startX + 4]).Value2 = transactions[i].Date.ToString();
((Excel.Range)this.Cells[i + startDataY, startX + 5]).Value2 = transactions[i].AttributeId.Name;
((Excel.Range)this.Cells[i + startDataY, startX + 6]).Value2 = transactions[i].PriorValue;
((Excel.Range)this.Cells[i + startDataY, startX + 7]).Value2 = transactions[i].NewValue;
private void btUpdateAttribute_Click(object sender, EventArgs e)
Cursor.Current = Cursors.WaitCursor;
using (var c = Common.MDS_WSConnect.CreateMdsProxy("yourdomain", "yourlogin", "yourpassword", mdsEndPoint))
c.Open();
EntityMembers em = GetEntityMembers(c);
Member[] members = em.Members.ToArray();
for (int i = 0; i < members.Length; i++)
((Excel.Range)this.Cells[i + 3, 2]).Value2 = members[i].MemberId.Name;
foreach (Common.ServiceReference1.Attribute att in members[i].Attributes)
if (att.Identifier.Name == "ValidDandT")
att.Value = DateTime.Now;
c.EntityMembersUpdate(intl, em);
DisplayEntityMembers(c);
c.Close();
Cursor.Current = Cursors.Default;
private void cbModels_SelectedIndexChanged(object sender, EventArgs e)
Identifier i = (Identifier)cbModels.SelectedItem;
if (md != null)
cbVersions.Items.Clear();
foreach (Common.ServiceReference1.Version v in md.Versions)
if (v.Identifier.ModelId.Id == i.Id)
cbVersions.Items.Add(v.Identifier);
cbVersions.DisplayMember = "Name";
private void cbVersions_SelectedIndexChanged(object sender, EventArgs e)
Identifier iVer = (Identifier)cbVersions.SelectedItem;
ModelMembersGetCriteria mmgc = new ModelMembersGetCriteria();
mmgc.Models = new Collection<Identifier>() { new Identifier() { Name = ((Identifier)cbModels.SelectedItem).Name } };
ModelMembersResultCriteria mmrc = new ModelMembersResultCriteria();
mmgc.Versions = new Collection<Identifier>() { new Identifier() { Id = iVer.Id } };
mmrc.IncludeLeafMembers = true;
cbEntities.Items.Clear();
cbMembers.Items.Clear();
Collection<EntityMembers> colEm = c.ModelMembersGet(intl, mmgc, mmrc, out or);
foreach (EntityMembers em in colEm)
cbEntities.Items.Add(em.EntityId);
cbEntities.DisplayMember = "Name";
private void cbEntities_SelectedIndexChanged(object sender, EventArgs e)
DisplayEntityAttributesCombo(c);
DisplayEntityAttributesAndMembersInSheet();
private void DisplayEntityAttributesAndMembersInSheet()
EntityMembers em = GetEntityMembers(c);
Member[] members = em.Members.ToArray();
((Excel.Range)this.Cells[2, 2]).Value2 = "MemberName";
((Excel.Range)this.Cells[2, 3]).Value2 = "AttributeName";
((Excel.Range)this.Cells[2, 4]).Value2 = "AttributeValue";
if (members.Count() > 0)
int ii = 0;
//attributes name on header line
foreach (Common.ServiceReference1.Attribute att in members[0].Attributes)
((Excel.Range)this.Cells[3, ii + 3]).Value2 = att.Identifier.Name.ToString();
ii++;
//members Data
int cptnbAttributes = members[0].Attributes.Count();
for (int i = 0; i < members.Length; i++)
for (int j = 0; j < cptnbAttributes - 1; j++)
((Excel.Range)this.Cells[i + 4, j + 3]).Value2 = members[i].MemberId.MemberType;
private void DisplayEntityAttributesCombo(ServiceClient c)
EntityMembers em = GetEntityMembers(c);
Member[] members = em.Members.ToArray();
if (members.Count() > 0)
cbAttributes.Items.Clear();
foreach (Common.ServiceReference1.Attribute a in members[0].Attributes)
cbAttributes.Items.Add(a.Identifier);
cbAttributes.DisplayMember = "Name";
cbAttributes.Visible = true;
private void cbMembers_SelectedIndexChanged(object sender, EventArgs e)
Identifier idMember = (Identifier)cbMembers.SelectedItem;
EntityMembers em = GetEntityMembers(c);
Member[] members = em.Members.ToArray();
Member m = members.FirstOrDefault(p => p.MemberId.Id == idMember.Id);
cbAttributes.Items.Clear();
foreach (Common.ServiceReference1.Attribute att in m.Attributes)
cbAttributes.Items.Add(att.Identifier);
cbAttributes.DisplayMember = "Name";
cbAttributes.Visible = true;
private void cbAttributes_SelectedIndexChanged(object sender, EventArgs e)
private void btReverseTran_Click(object sender, EventArgs e)
using (var c = Common.MDS_WSConnect.CreateMdsProxy("yourdomain", "yourlogin", "yourpassword", mdsEndPoint))
c.Open();
UpdateTransaction(c);
DisplayTransactions(c);
c.Close();
private void UpdateTransaction(ServiceClient c)
string versionName = "VERSION_1";
if (cbVersions.SelectedItem != null)
versionName = ((Identifier)cbVersions.SelectedItem).Name;
TransactionSearchCriteria trSrchCrit = new TransactionSearchCriteria();
trSrchCrit.ModelId = new Identifier() { Name = ((Identifier)cbModels.SelectedItem).Name };
//trSrchCrit.EntityId = new Identifier() { Name = ((Identifier)cbEntities.SelectedItem).Name };
trSrchCrit.EntityId = new Identifier();
trSrchCrit.VersionId = new Identifier() { Name = versionName };
//ExportView[] ev = c.ExportViewListGet(new International(), out or);
EntityMembersInformation emi = new EntityMembersInformation();
int totalTranCount = 0;
Collection<Transaction> transactions = new Collection<Transaction>();
OperationResult or = c.TransactionsGet(intl, trSrchCrit, out totalTranCount, out transactions);
Collection<ReplacementId> transactionReversed = new Collection<ReplacementId>();
or = c.TransactionsReverse(intl, new Collection<int>() { transactions.First().Id }, out transactionReversed);
Xavier Averbouch
Microsoft Community Contributor
Avanade , FRANCE
If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful". -
How to run excel macros using lookout
Hi,
I want use Excel macros for generating custom reports.Is it possible to run macros using run object in lookout
thanksHi,
I am pretty sure you can activate macros in Excel using the Run object in Lookout. I can think of two ways you can do this:
1. You can setup your Excel to run macros on startup using the Auto_Activate method. In this case, you will just launch excel with your workbook using the Run object and that should run the macros automatically. No brainer!
2. To better control as to when the macros are run we can assign in Excel some shortcut keys for their launching. We then would need to simulate these keystrokes to launch our macros. This can be done using the SendKeys method and some scripting, WHS Scripting for instance. See this pos
t for a scripting example which simulates Alt+Tab keys to bring-to-front an app.
You will launch the script from the Run object and this in turn launches Excel and then simulates the keys for luanching the appropriate macros. I admit this is kinda involved, but hey it works!
Hope this helps,
Khalid -
Calling a Siebel Business Service from an Excel Macro
Hi Everyone !!
I have a requirement where i have to call a siebel Business Service from an excel macro. Please help me with the code.
Regards,
AbhiHere's a starter for one:
Private Function ConnectToSiebel(sConnectString As String, sUserName As String, sPassword As String, _
oSiebel As SiebelDataControl) As Boolean
On Error GoTo ErrorHandler
' Uses the specified parameters to connect to the Data Control
Dim iErrCode As Integer
Set oSiebel = CreateObject("SiebelDataControl.SiebelDataControl.1")
oSiebel.Login sConnectString, sUserName, sPassword
If (oSiebel.GetLastErrCode <> 0) Then GoTo ErrorHandler
ConnectToSiebel = True
Exit Function
ErrorHandler:
MsgBox oSiebel.GetLastErrCode
ConnectToSiebel = False
End Function
The connect string passed takes the format:
host="siebel://<SERVER_HOST>/<SERVER_NAME>/PSCcObjMgr_enu"
You can then use the 'oSiebel' object as if it was the Application(). For example, Set oService = oSiebel.GetBusService("Blah")
Regards,
mroshaw -
Execute Excel Macro Through DIAdem
Hi All,
I am currently trying to run a script in DIAdem which exports certain material properties to an Excel Macro-enabled workbook. Inside the Excel workbook the user executes a macro to perform some calculations. The results of that calculation will then be re-imported into a DIAdem report. I have the import/export data part down, but the million dollar question is how can I execute an Excel macro from DIAdem's VBScript?
I know some are going to say this makes no sense, just do the calculation in DIAdem. I know this, but the file/calculations are an industry accepted toolbox and it must be done this way.
Thanks in advance and here is some dumbed down code to showcase the example:
Option Explicit 'Forces the explicit declaration of all the variables in a script.
Dim excel
Dim excelbook
Dim a
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
Set excelbook=Excel.Workbooks.Open("My File")
excelbook.Sheets("InputResults").range("B5").value = Data.Root.ChannelGroups(ChanGrp#).Properties("myProp").Value
'Call 'My_Macro' !!!!!!!!!!!!!!!!!!!!
Msgbox("Result is: " & excelbook.Sheets("InputResults").range("B5").value)
Solved!
Go to Solution.Hi GT_Mark
You simply can use the methode Run
Call Excel.Run("MyMacro")
Of course you have to make sure that you refer only to data that are available in Excel.
To obtain CodeCompletion for Excel in the script editor select Microsoft Excel x.x Objects Library in the "Registed Type Libraries" dialog box. The x.x value depends on your installed Excel version. To open this dialog box, select Script»Type Libraries in DIAdem SCRIPT.
Hope this helps
Winfried -
Does anyone an Excel macro to display units/currencies next to its KF?
Hello,
I need to change my BEX-display in the following way:
Current:
Order# Amount (loc.Currcy) Quanitity (BUOM)
12345 1000 EUR 5 ST
My idea is to have it as follows:
Order# Amount Loc.Currcy Quanitity Base Unit Of Measure
12345 1000 EUR 5 ST
Ok, I know how to supress the units/currencies for the Key Figures. I also was thinking of using the units/currencies as characteristics but then they would be display right to Order #. I want to have it in a new column right of its associated Key Figure.
I think I can do this with an Excel macro. As I'm not an Expert here, I'm wondering if someone already had done the effort to code such a macro and would be willing to share it with us.
ThanksUse the "Index Array" primitave under the "Array" sub-palette of the functions Palette. The array wires into the top input, and the index of the element you want wires into the bottom input - then the element of the array at the index is returned out the right hand side of the primative (I've attached an example VI).
cheers,
Christopher
Copyright © 2004-2015 Christopher G. Relf. Some Rights Reserved. This posting is licensed under a Creative Commons Attribution 2.5 License.
Attachments:
Index_Array_Example.vi 12 KB -
Acrobat have features similar to excel macros?
Does acrobat have a feature similar to excel macros? Example, clicking a button on title page starts a new form page with logo and questions already in place? The problem is the number of forms per customer is different so I would need the title page to have a built in function that generates new form pages.
Acrobat uses the JavaScript scripting language to provide automation code.
Acrobat also has the ability to edit the tool bars.
There is a built in tool to insert or add a new blank page.
One can also create a template that can be used create a new page from itself and it can include images and form fields. And if you program it correctly the fields will be renamed for each page and the scripts for performing the calculations will automatically adjust for the added page. -
Executing Excel Macros from SAP
Hi all Experts,
I have created a program which tranfers data from different internal tables into Different Worksheets of a single workbook.
Now, Can some one please tell me how to Execute macros from SAP.
Regards,
AJTo execute an Excel macro follow these steps.
1. Create macro inside Excel Workbook where you transferred your information.
2. Use following instruction to execute the desired macro you create:
DATA: EXCEL TYPE OLE2_OBJECT.
CREATE OBJECT EXCEL 'Excel.Application'.
CALL METHOD OF EXCEL 'Run' EXPORTING #1 = 'WRITE_SHEET_CELL'
#2 = 'VALUE1'
#3 = 'VALUE2'
#4 = 'VALUE3'.
In previous example, macro WRITE_SHEET_CELL was created first. The macro name must be in uppercase.
Regards.
Rafael Rojas. -
Running Excel macros from ABAP
Hello everyone,
I am trying to execute an Excel macro from an ABAP program. We are currently on a 46C system. While doing some research on help.sap.com I came across the method execute_macro in class i_oi_document_proxy. Ive never used methods in ABAP before and Im not really sure what Im doing. Has anyone got this to work? When I try to run the program it dumps with error OBJECTS_OBJREF_NOT_ASSIGNED.
Thanks,
Becky
Here is the program:
REPORT ztest_program.
INCLUDE ole2incl.
DATA gs_excel TYPE ole2_object .
DATA gs_wbooks TYPE ole2_object .
DATA gs_wbook TYPE ole2_object .
DATA gs_application TYPE ole2_object .
DATA: h_sheet TYPE ole2_object.
DATA: document TYPE REF TO i_oi_document_proxy.
*Name of the macro in Excel
DATA: macro_string(50) TYPE c
VALUE 'FB03process.FromTheBeginning',
no_flush TYPE c,
param_count TYPE i VALUE 0,
script_name TYPE c VALUE 'X',
error TYPE REF TO i_oi_error
OCCURS 0 WITH HEADER LINE,
retcode TYPE soi_ret_string,
error_string(50) TYPE c,
retvalue(30) TYPE c.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = text-007
EXCEPTIONS
OTHERS = 1.
CREATE OBJECT gs_excel 'EXCEL.APPLICATION' .
SET PROPERTY OF gs_excel 'Visible' = 1 .
GET PROPERTY OF gs_excel 'Workbooks' = gs_wbooks .
GET PROPERTY OF gs_wbooks 'Application' = gs_application .
*--Opening the existing document
CALL METHOD OF gs_wbooks 'Open' = gs_wbook
EXPORTING #1 = 'D:\temp\FB03process.xls' .
tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-009
EXCEPTIONS
OTHERS = 1.
GET PROPERTY OF gs_excel 'ACTIVESHEET' = h_sheet.
CALL METHOD document->execute_macro
EXPORTING macro_string = macro_string
param_count = param_count
script_name = script_name
no_flush = no_flush
IMPORTING error = error
retcode = retcode
CHANGING error_string = error_string
retvalue = retvalue.
disconnect from Excel
FREE OBJECT gs_excel.
PERFORM err_hdl.
FORM err_hdl.
IF sy-subrc <> 0.
WRITE: / 'Fehler bei OLE-Automation:'(010), sy-subrc.
STOP.
ENDIF.
ENDFORM. " ERR_HDLHi,
Please correct me if I am wrong but it seems that you have not fetched a handle to the document object before issuing the statement CALL METHOD document->execute_macro. Hence the error OBJECTS_OBJREF_NOT_ASSIGNED is being dislayed. If you want to use SAP Desktop Office Integration using ABAP Objects, take a look at this article at http://www.intelligenterp.com/feature/archive/ or http://www.sapinfo.net/public/en/index.php4/article/comvArticle-193333c63b4bd807d2/en/articleStatistic
Hope this helps.
Regards
Message was edited by: Shehryar Khan -
How to call excel macros programmatically in C#?
Hi,
I have a requirement where i need to call excel (2003) macros in C# program. Can anyone help me with a code snippet to do the same?
The excel macro function takes two input parameters? how can the parameters be passed?
Any code snippet to do the same in C# would be helpful.
Thanks.Hey there, Sid. I am tryin gto run your code, but I couldn't even gte it to fire. Here's what I ahve now:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication2
public partial class Form1 : Form
private void button1_Click(object sender, EventArgs e)
//~~> Define your Excel Objects
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
//~~> Start Excel and open the workbook.
xlWorkBook = xlApp.Workbooks.Open("C:\\Users\\Ryan\\Desktop\\Coding\\Microsoft Excel\\Work Samples\\Work Samples\\Historical Stock Prices.xlsb");
//~~> Run the macros by supplying the necessary arguments
xlApp.Run("ShowMsg", "Hello from C# Client", "Demo to run Excel macros from C#");
//~~> Clean-up: Close the workbook
xlWorkBook.Close(false);
//~~> Quit the Excel Application
xlApp.Quit();
//~~> Clean Up
releaseObject(xlApp);
releaseObject(xlWorkBook);
//~~> Release the objects
private void releaseObject(object obj)
try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
catch (Exception ex)
obj = null;
finally
GC.Collect();
When I hit the play button nothing happens. When I hot F5 nothing happens. Do you ahve any idea what I'm doing wrong. I'd appreciate any advice with this!!
Thanks!!
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it. -
Revised "Generate Excel Report" Example
I recently answered a question from a Forum user about an error encountered when trying to generate an Excel spreadsheet with the Report Generation Toolkit. I thought that the example code he was using was "unusual" and overly complex, and just discovered that it was, in fact, the LabVIEW 2013 "Generate Report From Template (Excel)" Example.
In the spirit of trying to demonstrate how nice the new(er) "Easy Excel" functions are, I rewrote this Example, and have attached it here. While doing so, I discovered (and have reported to NI) a "bug/feature" of the Excel Insert Graph function. One of its parameters allows you to position the graph by specifying the Left and Top edges (Left would be the Excel Column, Top would be the Excel Row). The only problem is that the parameters are reversed -- to put the graph on Row 1, Column G, you specify (0, 6), not (6, 0). Oops ...
Solved!
Go to Solution.Here is a Snippet, in LabVIEW 2012, of the Excel Demo (the Revised Generate Excel Report Example). If you have LabVIEW 2012 or more recent, you should be able to drag this into a blank Block Diagram and have the VI "magically" created. If you have an earlier version of LabVIEW, you can at least see a picture of all the VIs and wiring here, and can open LabVIEW and "build it yourself". There are no Case statements, so nothing is hidden from view. In case the image is too small, I also attached the PNG file, which you should be able to open with an Image Viewer and potentially print out for yourself.
Attachments:
Excel Demo.png 108 KB
Maybe you are looking for
-
I updated the iTunes software for my iPhone, which followed reinstalling iTunes. I moved some of my music back into iTunes, hoping to add a variety of tunes to the phone. Now, iTunes won't let me move anything into the phone. My wife thinks it could
-
TS1702 Can't find the tv show I purchased
Where does the file appear?
-
Error generating form on Designer 6i
Hi folks: I got a new PC. It comes with a AMD Atholon Processor. I am trying to test all the Oracle Products. But I am getting a Designer error, related with a forms generation: CDR-21605: Failed while processing......... I was looking on these forum
-
Editing and cropping error message in photoshop 10. help!!!!
i have elements 10. i have been unable to perform editing and cropping of my picutres due to the following error message: error message: Your system is low on disk space and elements cannot perform this operation. Try removing some files to free
-
W2k Designer 6i release 2 and Linux 8.1.7
It seems that the Designer 6i is specificly designed for Oracle 8i 8.1.6 and Not 8.1.7 which is the version that I have up and running. is there any work arounds that will allow me co connect to the Linux 8.1.7 with out haveing to install(multihome)