Mathematica Link For Excel MANUAL
Mathematica Link For Excel MANUAL
Mathematica Link For Excel MANUAL
Users Manual
&
Reference Guide
Excel Reference
Excel Worksheet Functions ....................................................................................................... 52
Toolbar Commands ................................................................................................................... 55
Context Commands ................................................................................................................... 59
Keyboard Shortcuts ................................................................................................................... 62
Data Types ................................................................................................................................. 64
Number Formats ........................................................................................................................ 68
ExcelLink Reference
ExcelLink Function Index ........................................................................................................... 69
ExcelLink 1
Introduction
Overview
These components work together to provide full two-way connectivity between Mathematica and Excel.
To use the link from Mathematica, you load the ExcelLink package.
To use the link from Microsoft Excel, you load the MathematicaLink add-in.
Features
A set of worksheet functions that allow you to use Mathematica functions in Excel formulas.
A Mathematica Function Wizard to help you learn about and enter Mathematica functions.
A Mathematica macros window that allows you to turn Mathematica code into Excel macros.
A special Clipboard window that allows you to easily copy and paste data between programs.
Changes
Version 3.5
Support for reading and writing Excel comments (including writing to a range using CellLabel ["my comment"]).
Shift +click the Mathematica Evaluate button to close link and bring up the Mathematica connection window.
Shift +right-click a range to quickly display the Mathematica Context menu without turning on Mathematica Contexts.
Improved Mathematica connection management (self-healing link, new connection options window).
Improved "Display Message Box" option now only applies to Print [] output.
Improved common multi-workbook initialization now supported using an init.m file in same directory.
Version 3.2
ExcelOpen , ExcelSave , and ExcelDialog support for Excel 2007 .xlsx, .xlsm, .xlsb files.
ExcelWrite support for writing Grid [{{1, 2, 3}, {4, 5}, {6}}, opts] f.ex. ANOVATable output.
Support for 64-bit Windows and 64-bit Mathematica connecting to 32-bit Excel.
ExcelLink 3
Fixed a bug where some workbooks with macro buttons did not relink correctly.
Improved ExcelInstall [Visible -> True ] method for launching visible instance of Excel.
Improved Mathematica Macros dialog method of inserting of code boxes and buttons.
No "kernel connection closed" dialog if initialization code ends with Quit [].
Version 3.1
Improved compatibility with workbooks originally built with version 2.x of the link.
Version 3.0
New in Version 3
Improved in Version 3
Start/End Link button is now an Evaluate button. This button can be used to interrupt current evaluations and re-
evaluate the workbook once changes have been made. To end a link, hold down the Shift key and click the Evaluate
button.
4 ExcelLink
You can now use the Function Wizard to edit existing formulas, select and assign options more easily, and browse for built-
in functions by category.
Standard packages are automatically declared by default and can be browsed directly within the Function Wizard. This
functionality replaces the Libraries Dialog.
Data Copy and Paste commands are now available from a Mathematica Context Menu. You can now see the data you are
copying and pasting using the Mathematica Clipboard window.
Kernel Dialog has now been incorporated into the Mathematica Clipboard window. You can type Mathematica expressions
directly into the Clipboard window, evaluate them, and paste the results somewhere if you choose.
Messages are now displayed and stored to a nonmodal window. Using the window you can scroll through multiple mes-
sages, find the source of a message, and even save the messages to a log file.
Formula Activate/Deactivate/Recalculate commands are available from the Mathematica Context Menu as a Com-
ments toggle and Recalculate command.
Increased worksheet function speed. Worksheet functions now calculate up to eight times faster.
Increased worksheet function reliability. Worksheet functions are now robust enough for the most demanding spreadsheet
applications. Automated tests have performed billions of continuous evaluations without errors.
Improved worksheet function error handling. Dependent evaluations are now suppressed through the use of native Excel
error codes.
To share workbooks with others, you can unlink the workbooks' formulas and macro buttons using the Unlink button in
the Mathematica Options Workbook tab. If colleagues have the link, they will be automatically prompted to relink
formulas when they open the workbook.
Strings and floating-point numbers can now be specified using the DATA worksheet function.
Obsolete in Version 3
The MATH worksheet functions provided in Version 2 have been superseded by a more flexible set of functions in Version
3. The MATH worksheet functions still work in Version 3. However, there may be slight differences in how results are
returned.
If you would like to convert your existing formulas, here are examples of how they can be mapped.
Version 2 Version 3
=MATH("Inverse", A1:B2) =EVAL("Inverse", A1:B2)
=MATHEXACT("Inverse", A1:B2) =EVAL("InputForm", EXPR("Inverse", A1:B2))
=MATHVOLATILE("Random[]") =CALC(EVAL("Random[]"))
The ReadExcel function has been superseded by a new suite of Excel functions. Here is an example of how an improved
ReadExcel function could be defined using the new Excel functions.
This ReadExcel function checks to see if the required file is already open in Excel. If not it opens the file, reads the
required data, and closes the book if it was not already open.
6 ExcelLink
To start using the link from inside Mathematica, you must first load the ExcelLink package.
The ExcelLink package provides a library of functions and symbols relating to Excel.
In[2]:= ? ExcelLink`*
ExcelLink`
You can learn more about these functions and symbols by looking up its entry in the Mathematica Reference section of this
information. You can also access this information within Mathematica's help system by looking under Add-Ons.
The top-level Excel function provides an easy way to specify a location in Excel, as if it were a variable, then assigns or
retrieves data from it.
In[3]:= Excel["A1"]
Out[3]= hello
In[4]:= Excel["A1"] =.
ExcelLink 7
When assigning data to Excel ranges, one-dimensional data can be assigned either to single rows or single columns of cells.
In[8]:= Excel["A1:C3"] =.
Displaying Graphics
In[1]:= Needs["ExcelLink`"]
From In[2]:=
In[3]:= Excel["B3"] = g
As specified, the graphic is displayed at cell B3. This cell will serve as an anchor point for the graphic; however, you can
move it anywhere you like. You can also resize the graphic as needed.
From In[4]:=
In[5]:= Excel["B3"] = g
In[6]:= Excel["B3"] =.
8 ExcelLink
Displaying Expressions
In[1]:= Needs["ExcelLink`"]
In[5]:= TraditionalForm[expr]
Out[5]//TraditionalForm=
1
sin2 (i )
2
In[7]:= Excel["B3"] =.
ExcelLink 9
Four kinds of Excel objects are supported. Here is a list of the objects with some methods that apply to them.
For detailed information on all the objects and methods provided by the ExcelLink package, see the Mathematica Ref-
erence section.
Shorthand Notation
Objects
Most objects in Excel can be referenced directly by a unique identifier. The identifier is typically the name of an object or,
in the case of ranges, the address. If an identifier is unique among all object types, you do not need to specify what kind
of object it is.
ExcelRead[ExcelRange["A1:B10"]]
Here the range object is specified only by its address; the identifier implicitly identifies it as a range.
ExcelRead["A1:B10"]
You can use this type of shorthand referencing in any function that requires an Excel object.
Methods
Read and write operations are so common, a shorthand has also been provided for them, and for clearing a range.
In[1]:= Needs["ExcelLink`"]
In[3]:= Excel["A1:B10"]
In[4]:= Excel["A1:B10"] =.
10 ExcelLink
The above three lines of shorthand code are equivalent to the following.
In[6]:= ExcelRead[ExcelRange["A1:B10"]]
In[7]:= ExcelClear[ExcelRange["A1:B10"]]
Notes
If more than one object has the same identifier (e.g. a shape has the same name as a sheet) the identifier most likely to be used by
the calling method is returned.
Object Notation
Using full object notation can be useful when referring to an object by index, or providing context for the object.
ExcelSheet[1]
ExcelSheet["Book1", "Sheet1"]
ExcelSheet["Book1", 1]
ExcelRange["Report.xls", 1, "A1:D100"]
Excel object references are resolved when they are passed to a method, not before. Until then, they are just Mathematica
expressions representing a location in Excel.
In[1]:= Needs["ExcelLink`"]
Out[3]= $Failed
If you want to see if an object reference is valid, you can do so by using the ExcelCheck function.
Out[4]= False
You can return collections of objects as a list by using the plural of an object name.
In[5]:= ExcelSheets[]
In[6]:= ExcelName[First[ExcelSheets[]]]
Out[6]= Sheet1
ExcelLink 11
You can also return the embedded context information for the objects.
In[7]:= ExcelContext[First[ExcelSheets[]]]
Out[7]= {Book1}
Expression Cells
If the Number Format of an Excel cell is set to Text, the contents of the cell are considered to be a Mathematica expression
when transferring them to Mathematica via the clipboard or in a macro.
Notes
Cells should be formatted as Text before entering an expression. To convert existing contents to Text, you can reenter them
manually or use the provided Expression command from the Mathematica Context menu.
Expressions such as 1 / 2 or -x can only be entered in cells formatted as Text. Otherwise, Excel will attempt to interpret them as
something else.
When working with expression cells, all cells in the range should be formatted as Text. Partial expression ranges are not currently
supported.
From Mathematica, you can use the ExcelFormat function to apply or unapply Text format to a range.
Data Cells
If the Number Format of an Excel cell is anything other than Text, the cell is considered a data cell.
Data is transferred as it is natively stored in Excel. This means, for example, all numbers will be returned as floating-point
doubles. This includes dates that are numbers with special formatting properties.
Nonnative expressions are converted to an equivalent Excel data type whenever possible. Expressions that do not have
any possible Excel-equivalent are converted to InputForm strings.
Notes
You can use the ExcelDate function and ExcelForm functions to work with date values once you get them into Mathematica.
Cell references in Excel-based formulas such as =EVAL(A1,A2,A3) are an exception to this rule. In this case, you must wrap formula
arguments with the provided DATA function to treat them as data cells; =EVAL("StringJoin", DATA(A2), DATA(A3)), for example.
12 ExcelLink
Automating Excel
Opening Excel
By default, the ExcelLink package automatically connects, as needed, to an open instance of Excel. This provides easy, on-
demand connectivity. In this mode, you can open or close Excel on your own whenever you wish.
If you write Mathematica code that automates Excel to perform a task, you may want the Mathematica code to initiate
opening an instance of Excel. The ExcelInstall function provides a way of doing this.
In[1]:= Needs["ExcelLink`"]
Once an Excel automation routine has been developed, you can set Visible -> False instead. This will open a hidden,
private instance of Excel to perform the requested tasks.
Importing Workbooks
In[1]:= Needs["ExcelLink`"]
In[3]:= ExcelOpen[f]
In[4]:= ExcelSheets[]
Out[4]= {-Sheet: IBM-, -Sheet: CSCO-, -Sheet: AAPL-, -Sheet: MSFT-, -Sheet: BLDP-,
-Sheet: AIG-, -Sheet: ADP-, -Sheet: JNJ-, -Sheet: SYY-, -Sheet: WMT-}
This previews the first five rows of data from the sheet.
In[6]:= Take[data, 5]
Out[6]= {Date, Open, High, Low, Close, Volume, Adj. Close}, 36 886., 88.97, 89.53, 82.14, 85., 6.0523 106 , 84.47,
36 878., 88.39, 94.41, 80.07, 89., 7.6938 106 , 88.45,
36 871., 96.49, 98.23, 87.32, 87.81, 6.1856 106 , 87.27,
36 864., 96.01, 104.74, 93.13, 97., 5.5668 106 , 96.4
ExcelLink 13
From In[8]:=
This closes the workbook once you are finished importing data from it.
In[9]:= ExcelClose[]
Exporting Workbooks
In[1]:= Needs["ExcelLink`"]
You can provide any format to an exported workbook by referencing an existing template file.
This specifies an existing template file to use for exporting the file.
In[3]:= ExcelNew[f]
The template contains a named range that defines where to put data in the report.
In[4]:= ExcelRanges[]
In[5]:= ExcelShapes[]
From In[9]:=
In[12]:= ExcelSave[Active, f]
This closes the workbook once you have finished exporting data to it.
In[13]:= ExcelClose[]
In[14]:= DeleteFile[f]
Closing Excel
In[1]:= Needs["ExcelLink`"]
Once your automation routines are completed, you can use the ExcelUninstall function to close Excel.
In[2]:= ExcelUninstall[]
By default, ExcelUninstall only closes visible instances of Excel if no workbooks remain open. This avoids accidental
data loss. You can force a visible instance of Excel to close, even if workbooks are open, by specifying Visible -> True as
an option to ExcelUninstall .
ExcelLink 15
Arguments for the function are specified using pattern _ indicators. The delayed assignment := operator indicates that
the body of the function is evaluated only once the values for the arguments are known.
In[2]:= addtwo[2, 2]
Out[2]= 4
The next example uses a function defined in a standard package, which you must load first.
In[5]:= triplot[10]
From In[5]:= 9
8
10
2
3
5
1
In[6]:= triplot[n_] :=
Module[{data},
data = Table[Random[], {n}, {2}];
PlanarGraphPlot[data]
]
16 ExcelLink
In this definition, a local variable is defined within the body of the function. The two steps within the body of the function
are separated using a semicolon. The final line of code returns the value of the function.
In[7]:= triplot[10]
From In[7]:= 4 1
10
8 6
2
3
9
Special Considerations
Usage
To help others know how to use your function, you can define a usage message.
The usage message is used by the Mathematica Function Wizard to automatically generate argument templates for the
function. To be fully compatible with the Function Wizard, you should always use the following convention for your usage
messages.
In[9]:= f::"usage" = "f[x] does one thing. f[list] does another. f[list, x] does more."
Out[9]= f[x] does one thing. f[list] does another. f[list, x] does more.
Options
You can also define a set of default options for your functions, if needed.
This clears the previous definition for the function, then defines it with options.
In[11]:= Clear[triplot]
From In[13]:=
8
0.8
3 6
0.6 1
4
0.4
0.2
2
5
10
7
0
0.2 0.4 0.6 0.8
Errors
When you are developing a function that will be used in Excel, you should consider returning the symbol $Failed if
something goes wrong in your function. You can do this using the Check function.
The symbol $Failed is converted to a #VALUE! error in Excel that will suppress further dependent calculations.
In[15]:= triplot["hello"]
Out[15]= $Failed
To be complete, you should also create a catch-all function definition that will handle the case where users provide argu-
ments that do not match the pattern you specified. By default, the function returns unevaluated.
In[16]:= triplot[1, 2, 3]
Out[16]= triplot[1, 2, 3]
In[18]:= triplot[1, 2, 3]
Out[18]= $Failed
You can also create your own error messages to inform the user about what went wrong.
In[19]:= triplot[___] :=
Module[{},
Message[triplot::"args"];
$Failed
]
In[21]:= triplot[1, 2, 3]
Out[21]= $Failed
Once you have developed a set of Mathematica functions you would like to use in Excel, you can collect cells that define
the functions in one place to make it easier to transfer the code to Excel.
In[2]:= Clear[triplot]
In[6]:= triplot[___] :=
Module[{},
Message[triplot::"args"];
$Failed
]
To deploy this code as an Excel function, you will need to copy the contents of the notebook cells that define the function
to an initialization code box in an Excel workbook.
Click New... and name the macro Initialization. This is the default if no other macros exist in your workbook.
Select the Input cells to copy. To select noncontiguous cells, hold down the Ctrl key.
Click and drag inside the code box to select all existing contents.
You can now use the Mathematica function you created inside Excel.
Notes
Using the code box approach, you can create workbooks that have no dependencies on other files.
Package Deployment
Mathematica notebooks can automatically generate an associated package file. This provides an easy way for you to
export a set of Mathematica function definitions you would like to use in an Excel workbook.
With this in mind, on the Excel side, the MathematicaLink add-in checks for a package file with the same name in the
same directory when initializing a workbook. If one is found, the code in the file is considered the initialization code for the
workbook.
Here is how to create a package file from a notebook, then use the contents of the package file as initialization code in a
workbook:
Create .nb and .xls files with the same name in the same directory.
Select the cells that contain code that will be used in the workbook.
Click Cell Cell Properties Initialization Cell to specify the selected cells as initialization cells.
Save the notebook. When you do this, you will be prompted to create a package file with the contents of the
initialization cells.
You should now have .nb, .m, and .xls files in the same directory with the same name. In the future, every time you save
changes to the notebook, the package file is automatically updated. In turn, the next time you evaluate in Excel, the new
set of function definitions will be automatically loaded and used.
Notes
Using the package approach, you can easily develop and update function definitions for a workbook. However, you must remember
to send the package file along with the workbook to enable others to interact with the workbook.
During development, be sure to save changes to your Mathematica notebook in order to update the package file before using it
from the Excel side.
ExcelLink 21
When developing Mathematica code, it is best to separate input and output definitions from the main analysis portion of
the routine. This way your analysis code can be easily adapted to obtain inputs and send outputs anywhere.
In[2]:= m = Inverse[m];
In[3]:= m
To use this code as an Excel macro, you only need to load the ExcelLink package to modify the input and output sections.
Before doing this, open Excel and type in the same inputs into the workbook locations indicated in the following.
In[4]:= Needs["ExcelLink`"]
In[5]:= m = Excel["B3:C4"];
In[6]:= m = Inverse[m];
In[7]:= Excel["B3:C4"] = m
In this example, the input and output range is the same. This is a way of performing in-place evaluation.
Locate the cells in your notebook that define inputs to your analysis.
Likewise, locate the cells in the notebook that display outputs of your analysis.
Special Considerations
Status
If your analysis takes a while to complete, you may want to provide some feedback to the user on how the analysis is
proceeding. You can do this by using the ExcelStatus function.
In[1]:= Needs["ExcelLink`"]
This writes status information to the status bar at the bottom left-hand side of the Excel window. In the final line
ExcelStatus is called without arguments in order to return the status bar to its default state.
Notes
Writing status messages makes the analysis section of your notebook Excel specific. However, this may be required for longer
routines.
Writing status messages can also be a good way to see which part of your analysis is taking up the most time.
Dialogs
If you would like to ask the user to select a range or specify a file name during a macro, you can do so using the
ExcelDialog function. The symbol $ExcelDialogs gives a list of available dialogs.
In[9]:= $ExcelDialogs
In[10]:= ExcelDialog["Range"]
Notes
When running code from Mathematica, you need to activate Excel first to interact with an Excel dialog.
Notebook Deployment
When developing Excel macros, you do not need to transfer code to a workbook. The Mathematica code can remain stored
in a notebook file. In this case, any time you want to run a macro on a particular Excel workbook, open the notebook that
contains the macro and, with the workbook open in Excel, evaluate the code from the notebook.
To create a standalone workbook interface, you can transfer the Mathematica macros you have developed in a notebook to
code boxes in the Excel workbook. Once this is done you can create buttons for the macros.
To deploy Mathematica code as an Excel macro you will need to copy the notebook cells that define the macro to a code
box in an Excel workbook.
Here are the notebook cells that contain the code you want to use as a macro.
ExcelLink 23
To deploy Mathematica code as an Excel macro you will need to copy the notebook cells that define the macro to a code
box in an Excel workbook.
Here are the notebook cells that contain the code you want to use as a macro.
In[1]:= Needs["ExcelLink`"]
In[2]:= m = Excel["B3:C4"];
In[3]:= m = Inverse[m];
In[4]:= Excel["B3:C4"] = m
Click New... and name the macro whatever you like. Spaces in the macro name are permitted.
Select the cells to copy. To select noncontiguous cells, hold down the Control key.
Click and drag to select all existing contents of the code box.
Select the name of the macro from the Available Macros list.
Click Button... .
For more information on using macros you create in Excel, see Working with Macros.
Notes
When running macro code from inside Excel, it is not necessary to load the ExcelLink package. However, you can still include the
line in your macro.
Using the code box approach, you can create workbooks that have no dependencies on other files.
Package Deployment
Mathematica notebooks can automatically generate an associated package file. This provides an easy way to export a set
of Mathematica commands that can be used as a one-click workbook processing macro.
To create a package file, follow the steps outlined for creating a package file outlined in the "Package Deployment" section
of Creating Excel Functions. The only difference is, in this case, you will save a sequence of macro commands to the
package file instead of a set of function definitions.
You should now have .nb, .m, and .xls files in the same directory with the same name. In the future, every time you save
changes to the notebook, the package file is automatically updated. In turn, the next time you click Evaluate in Excel, the
new workbook processing macro will be used.
Notes
If you would like the kernel to close after workbook processing is complete, include Quit [] as the last line of your macro.
ExcelLink 25
After installing the link, you will see a Mathematica Link for Excel folder in your Start All Programs menu. The add-in in
this folder is required if using the link from the Excel side or when copying and pasting data between programs.
If you did not install the add-in when you installed the software, click Mathematica Link Add-In to do so now. The add-
in will install itself when it is loaded the first time. This may take a moment depending on your anti-virus/ security settings.
If you are prompted to do so, choose to Enable Macros in the security warning dialog. If no dialog appears and nothing
works, you may need to adjust your Excel macro security settings to permit the macros in the add-in to run. Refer to the
Help menu in your version of Excel regarding how to change your macro security settings. Once you have adjusted your
security settings, close Excel and try loading the add-in again.
In Excel 2007 or later, the Mathematica toolbar can be found under the Add-Ins ribbon tab.
If you would like a Mathematica menu instead, you can click the Options button on the toolbar. All commands in the
Mathematica menu are identical to those on the Mathematica toolbar. The Mathematica menu can be useful if you would
like to use the Alt key to access menu-based commands.
Once you have installed the add-in the first time, you no longer need to use the Start menu shortcut. Instead, you can
use Tools Add-ins dialog to load or unload the Mathematica Link add-in. Excel checks the settings in this dialog each
time it starts and automatically loads any checked add-ins.
To access the add-ins manager in Excel 2007 or later, click the Office button / File menu to the upper-left
corner, click Excel Options, then under Add-ins, next to the Manage: Excel Add-ins dropdown box, click
Go....
26 ExcelLink
Entering a Function
Once the Mathematica Link add-in is loaded, you are ready to perform Mathematica calculations inside Excel. One way of
doing this is using the EVAL worksheet function. This worksheet function allows you to call any Mathematica function from
within an Excel formula.
Try entering the simple Mathematica function Prime in an empty worksheet cell. This is done as shown.
Formula Result
=EVAL("Prime",100) 541
International verisons of Excel may require semicolon-separated formulas such as =EVAL("Prime"; 100).
During your first calculation, a Mathematica kernel will be launched as a computation server for Excel. This new
process may appear in your Windows task bar.
Now, try creating an interactive prime number calculator by specifying a cell reference as an argument.
Formula Result
=EVAL("Prime",A1) #N/A
Unless you have already entered a value in cell A1, the function returns unevaluated and displays an error code. The #N/A
error code indicates that one or more inputs to the formula are not available.
Type any integer you choose in cell A1, and a prime number will be calculated for you.
Formula Result
=EVAL("Factorial",10) 3628800
=EVAL("Expand","(x+1)^3") 1 + 3 * x + 3 * x ^ 2 + x ^ 3
Mathematica contains thousands of functions. If you know precisely which Mathematica function you wish to use and the
arguments it takes, you can type it directly into your spreadsheet, as shown.
If you are unsure of the name of a Mathematica function or how to use it, or want to explore the functions Mathematica
has to offer, click Functions on the Mathematica toolbar. This will launch the Mathematica Function Wizard.
ExcelLink 27
The first step of the wizard is designed to help you find, and learn about, Mathematica functions.
The next step is designed to help you interactively specify arguments to the function.
An optional third step is available to select and specify options for functions such as Plot that have a defined set of
options.
Notes
Unlike Excel, Mathematica uses case-sensitive syntax. Therefore, be sure to capitalize Mathematica function names like Prime .
If you do not include a * character in your name search, the wizard defaults to a non-case-sensitive search for *name*.
You cannot interact with a Mathematica front end that is in server mode. If you would like to work in the Mathematica front end,
you can launch another standard instance of the front end.
Creating a Macro
To call Mathematica code as an Excel macro, the Mathematica code must be contained in a named code box inside Excel.
Once you have created the named code box, you can then create a button that will call the code in the box. The Mathe-
matica Macros manager can help you do this.
Click New... and specify a name. In this case, name the macro "Example".
Click OK.
ExcelLink 29
The Example macro is added to the list Available Macros and a code box for the Example macro is inserted at the location
you specified.
The initial contents of the code box are specified by a customizable template. In this case, you can leave the default code
as is. Before running the code, however, you should type values into the cells referenced in the macro.
To run a macro:
Click Run.
To make it more convenient to run the macro, you can create a button for the macro.
Click Button... .
Click OK.
30 ExcelLink
Notes
The default macro name, Initialization, is reserved for code you want to run automatically every time you
connect to a kernel or click Evaluate.
To move a button or a code box, hold down the Ctrl key before selecting it.
Code boxes can be located anywhere in a workbook. They do not need to be on the same sheet as the button
calling the code.
Evaluating an Expression
You can use the Mathematica Clipboard window to evaluate Mathematica expressions the same way you would in a
Mathematica notebook. This may be useful, for example, to quickly check the state of a variable or experiment with a
function you are using for the first time.
Click Evaluate.
Once the Mathematica kernel has evaluated the expression, the answer replaces the contents of the Clipboard window.
Notes
To paste evaluation results to a location in Excel, click Paste. You will be prompted to specify where to paste the results.
To paste evaluation results to another program, click Put. This puts the evaluation results onto the global Clipboard. You can then
paste them into another program.
If you are finished using the link, you can uncheck Mathematica Link in the Add-Ins manager and click OK. This unloads
the add-in from Excel.
When you unload the link, you will be prompted to delete your personal settings.
Click No to preserve your settings until the next time you use the link. Click Yes to restore default settings the next time
you use the link.
Notes
If you do not uncheck Mathematica Link in the Add-Ins manager, the link is automatically loaded the next time you start Excel.
32 ExcelLink
All Mathematica Link dialogs are non-modal. You can leave dialogs open and still work in Excel.
Click Close or press the Esc key. The dialog remembers its current location and state the next time it is
displayed.
Click the X in the upper right-hand corner. The dialog returns to a default location and state the next time it is
displayed.
Notes
Occasionally, changes you make in Excel may not be reflected in the contents of an open dialog. If this happens, redisplay the
dialog to refresh its contents.
Mathematica Link commands that operate on the current selection are available from a Mathematica context menu. To
display this context menu, right-click a range when Mathematica contexts are enabled.
Notes
All commands on the Mathematica context menu also have a keyboard shortcut. See Keyboard Shortcuts for a listing.
ExcelLink 33
Expression Cells
If the Number Format of an Excel cell is set to Text, the contents of the cell are considered to be a Mathematica expression
when transferring them via the clipboard or in a macro.
Notes
The number format of a range can also be changed using Excel's built-in Format Cells Number tab.
Cells should be formatted as Text before entering an expression. To convert existing contents to Text, you can reenter them
manually or use the provided Expression command from the Mathematica Context menu. Expressions such as 1 / 2 or -x can only
be entered in cells formatted as Text. Otherwise, Excel will attempt to interpret them as something else. When working with
expression cells, all cells in the range should be formatted as Text. Partial expression ranges are not currently supported. From
Mathematica, you can use the ExcelFormat function to apply or unapply Text format to a range.
Data Cells
If the Number Format of an Excel cell is anything other than Text, the cell is considered a data cell.
Data is transferred as it is natively stored in Excel. This means, for example, all numbers will be returned as
floating point doubles. This includes dates that are numbers with special formatting properties.
Non-native expressions are converted to an equivalent Excel data type whenever possible. Expressions that do
not have any possible Excel-equivalent are converted to InputForm strings.
Notes
You can use the ExcelDate function and ExcelForm functions to work with date values once you get them into Mathematica. Cell
references in Excel-based formulas such as =EVAL(A1,A2,A3) are an exception to this rule. In this case, you must wrap formula
arguments with the provided DATA function to treat them as data cells; =EVAL("StringJoin", DATA(A2), DATA(A3)), for example.
34 ExcelLink
There are five worksheet functions provided by the Mathematica Link add-in.
Function Use
EVAL perform Mathematica evaluations
Together, these functions can be used to build up expressions and perform evaluations in Mathematica in very flexible
ways. For more detailed information on each worksheet function, see Excel Worksheet Functions.
Using the EVAL worksheet function, you can call any function defined in Mathematica. This immediately extends the
number of functions available inside Excel from a few hundred to several thousand.
Example Result
=EVAL("Simplify","x^2+2x+1") (1 + x)^2
EVAL examples.
As shown, Mathematica syntax must be wrapped in quotes when directly typed into an Excel formula. If this is not done,
Excel's formula parser will try to interpret these as Excel syntax. To avoid having to do this, you can create references to
arguments in Excel cells. This is discussed in more detail in Specifying Arguments.
In its single-argument form, the EVAL function can also be used to evaluate Mathematica expressions such as symbols or
operator forms of expressions.
Example Result
=EVAL("$Version") the version of the kernel you are running
When specifying a Mathematica function, the function does not necessarily have to be a named Mathematica function. The
function can also be specified as a nameless pure function. Using pure functions, you can use multiple functions to create a
new function on the fly.
Method Notes
=EVAL("Sum[1/x^3,{x,10}]") this sums the first 10 terms in the series
Note that, as shown, arguments do not have to appear in sequential order inside the function. The index specifies which
argument goes where.
Once values that may be edited have been specified as arguments, a reference to the cells containing the values can be
made. This is discussed in the next section.
Notes
If you are familiar with pure functions, you will notice the pure function indicator (&) is not used here. There is no need because, in
this context, it is clear that if # signs are present, a pure function is being specified.
For more information on creating and using pure functions, refer to the tutorial Pure Functions.
36 ExcelLink
Specifying Arguments
While arguments can be typed directly into a formula, it is generally more convenient to specify arguments as the contents
of a cell or a range of cells. Editing values contained in cells is much easier than editing values embedded in a formula.
And, if entered in a cell, Mathematica syntax does not need to be wrapped in quotes.
Method Notes
=EVAL("Random[Integer,{1,6}]") function and its arguments entered as a single expression
Using the last form of the example, you can easily change the upper and lower bound of the random number by changing
cells D2 and E2. Also, by typing Real in cell C2 you can change the type of random number returned.
A single column or single row of cells is interpreted as a one-dimensional Mathematica list; if a range has multiple rows
and multiple columns, it is returned as a 2D list of lists.
To specify a string in Mathematica, you can wrap a text argument with the DATA function. The following methods return a
list of Mathematica functions that end in Solve.
Method Notes
=EVAL("Print",DATA("Hello")) evaluates Print [Hello]
Mathematica evaluations are performed at the precision of the inputs provided. If you would like the kernel to perform
evaluations numerically at floating-point precision, wrap your inputs with the DATA function.
Method Notes
=EVAL("Eigenvalues",A1:C3) performs evaluation using symbolic or numeric methods depending on the
inputs provided in A1:C3
=EVAL("Eigenvalues",DATA(A1:C3)) always performs evaluation using numeric methods
Specifying Subexpressions
Using the EXPR function you can build up multi-function expressions for a single evaluation.
Method Notes
=EVAL("f",EXPR("g",1),EXPR("g",2)) evaluates f[g[1],g[2]]
Specifying subexpressions.
Specifying Options
Mathematica functions may have defined options associated with them. To specify an optional argument you can use the
RULE worksheet function.
Method Notes
=EVAL("ListPlot",A1:B100,RULE("PlotJoined",D2)) specifies an option using the value in cell D2
Specifying an option.
Generating Graphics
The EVAL worksheet functions can also be used to return Mathematica graphics.
Example Result
=EVAL("ListPlot","Table[Random[],{50}]") ExcelGraphic [1]
Mathematica graphics are displayed as picture objects in Excel. By default, these pictures are rendered as Windows
metafiles. This format scales reasonably well since it is a vector format. Font sizes, however, may become a bit distorted
when a graphic is resized. If this happens, you can force the graphic to be re-rendered at its new size by recalculating its
formula. Re-rendering the graphic will reapply any font size you have specified as a graphics option.
Notes
It is the name of a graphic that associates it with a particular Excel cell. For example, if a formula in cell E10 returns graphics, the
picture named "Graphic E10" will be updated on the same sheet. If no picture named "Graphic E10" exists on that sheet, a new
graphic will be created. This is the extent to which the picture is "linked". When cutting and pasting a Mathematica-generated
picture to another application or worksheet, this name-based "link" is not maintained. The copied graphic is simply a static picture.
By modifying the name of a picture, you can change which cell updates that graphic. To modify the name of a picture, you can
select the picture and click in the Name box on the left-hand side of the formula bar.
38 ExcelLink
Generating Messages
If a message is generated during a kernel evaluation, it is sent to the Mathematica messages window. Here are some
evaluations that generate kernel messages.
Example Result
=EVAL("7+") $Failed or #VALUE!
=EVAL("1/0") ComplexInfinity
When a Mathematica evaluation returns $Failed , an Excel #VALUE! is returned. This suppresses further evaluations that
depend on this result. However, often when messages are generated, the original calculation request may be returned
unevaluated, as shown in the last example.
Notes
Options that control how the link responds to a kernel message can be specified under the Mathematica Options Message tab.
To return lists of values to multiple cells, Mathematica functions can be entered as an array formula. Some functions in
Mathematica naturally return lists, others can be mapped over lists. Here are some examples.
Example Result
=EVAL("Range","10") {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Once entered, array formulas appear surrounded by { } in the formula bar. All cells in an array formula range share a
single formula, each element of the array returned to a separate cell.
The Mathematica Link add-in provides two tools to help make using array formulas easier:
The Mathematica Function Wizard can help you automatically enter and edit array formulas.
ExcelLink 39
The Array command on the Mathematica context menu provides a way to easily toggle between single-cell and array
formulas.
Notes
If you manually edit an array formula but forget to select all cells in the array beforehand, an error message will appear when you
try to reenter the formula. If this happens, press Esc to cancel any changes you made. Then, select all cells in the array before
making the changes again.
Array formulas can significantly reduce calculation times if the same operation is being performed on a large number of cells. If you
have filled a range with the same formula by dragging the formula across the range, it may be much faster to perform these
calculations using an array formula. There is a transaction time associated with each call to Mathematica. If a single array formula is
used to return values for 100 cells, recalculation could be up to 100 times faster than calling 100 individual formulas.
Controlling Recalculation
Forcing Recalculation
Excel typically recalculates formulas only when the inputs to a formula have been changed. However, when you change
the definition of a function or the value of a symbol in Mathematica, there is no way for Excel to automatically know about
this change. In this case, you may want to force formulas to recalculate.
Wrap the formula with the CALC function. You can then trigger recalculation of that formula by pressing F9 .
Example Description
=CALC(EVAL("Random[]")) gives a new random number each time F9 is pressed
Press Ctrl + Shift + = or choose Recalculate from the Mathematica context menu.
Click the Evaluate button. This is an option specified under Mathematica Options Workbook.
40 ExcelLink
Disabling Recalculation
By temporarily storing formulas as comments, you can disable recalculation on a formula-by-formula basis. You may want
to do this to preserve currently calculated values or to suppress unwanted recalculation.
Press Ctrl + Shift + ' or check Comment from the Mathematica context menu.
Press Ctrl + Shift + ' again or uncheck Comment on the Mathematica context menu.
Commenting a formula essentially freezes the formula in its currently calculated state. Commenting formulas for an entire
workbook is discussed as a way of sharing a workbook with others in Sharing Workbooks.
Notes
To select an entire sheet, click the upper left-hand corner of the header row, between A and 1. You can then apply selection
commands to the sheet.
The CALC function can be used to generate random numbers for Excel-based simulations.
ExcelLink 41
There are three types of Mathematica macros that you can create.
The difference between the first two is that a workbook definitions macro does not perform actions on a workbook, a
workbook processing macro does.
All Mathematica macros can be deployed by creating a code box to store the Mathematica code inside a workbook. For
workbook-level macros, however, you can also store the Mathematica code in a package file.
A workbook package file should be in the same directory and have the same name as a workbook with the .m extension
replacing .xls.
Code boxes are simply text boxes that have been formatted for writing Mathematica code and given a special name. They
are, in every other way, ordinary text boxes.
There are two ways of selecting a text box: selecting the box itself or selecting text inside the box. The selection border of
the text box will be different in each case. To do anything other than edit the text inside the box you will need to make
sure the box itself is selected. Once the box itself is selected, you can, for example, move it or resize it, copy and paste it
to another location, or delete it.
42 ExcelLink
When typing in a text box, be aware that Excel goes into a different mode. Most toolbar buttons, for example, are no
longer available.
As with many toolbar buttons, Mathematica macros do not work while Excel is in this mode. To get out of this edit mode,
press the Esc key or click out of the box.
By default, the caption of the button will be the same as the macro name. You can change this. You can also change the
size of the button or move it. To do this, you will need to select the button.
To select a button:
Hold down the Ctrl key and then click the button.
Once you have a button selected, you can work with it as you would any other shape. You can, for example, move it or
resize it, change its caption, copy and paste it to another location, or delete it.
Right-clicking a button will also select it and work with it in various ways.
The Mathematica Clipboard window can evaluate multiple lines of code at a time. When multiple lines are evaluated on the
Clipboard, only the result from the last line is returned. You can use this behavior to progressively build up code that can
be used as a macro by alternatively clicking Evaluate and Restore.
When used this way, the Mathematica Clipboard window becomes a floating macro code box. The Clipboard Evaluate
button becomes a Run button for the macro during development. When you are done developing, you can transfer the
code to a code box.
Developing in Mathematica
If you are familiar with the Mathematica notebook front end, you can develop code in that environment, then transfer it to
a code box in Excel.
For more information on developing macros in Mathematica, see Creating Excel Macros.
Once you have developed a macro, you may want to protect your code. This can be done by hiding or protecting the sheet
containing the code.
Link Management
Opening a Link
The first time you request a Mathematica evaluation in Excel, a link to a Mathematica kernel will open automatically. If you
would like to force a link to open, even if there is nothing to evaluate, you can:
You can manually specify a kernel to connect to using the Mathematica Options Kernel tab. Settings you specify will be
used automatically the next time you connect.
Notes
If you do not have a typical Mathematica installation, you may be required to specify a kernel the first time you use the link.
Interrupting Evaluations
Although most Mathematica evaluations can be interrupted, some cannot. If the kernel does not respond to an abort
request after some time, you can choose to close the kernel to end the evaluation.
Right-click the Mathematica kernel in the task bar and choose Close.
Notes
Pressing the Esc key does not interrupt Mathematica evaluations. The Esc key is used by Excel to send interrupts to local Visual
Basic code.
Closing a Link
Notes
The kernel is automatically closed whenever Excel is closed or the MathematicaLink add-in is uninstalled.
ExcelLink 45
Sharing Workbooks
Unlinking a Workbook
Before sharing a workbook containing Mathematica formulas or macros, you may first want to unlink the workbook.
Unlinking a workbook will allow others to take a look at the results in the workbook without launching a kernel, encoun-
tering pathnames from your hard drive, or inadvertantly replacing cell values with #NAME? errors.
To unlink a workbook:
Unlinking a workbook.
When unlinked, formulas are stored as cell comments, and macro buttons display a "macro cannot be found" error when
clicked.
Once a workbook is unlinked, it can easily be viewed without problems on other machines, even machines where Mathe-
matica Link is not installed. Those who do have the link will have the option of relinking the workbook and interacting with
it.
Notes
In Excel, cell comments are typically indicated by a small red triangle in the upper-right corner of a cell. This is an option that can
be specified under Tools Options View. To view a comment, place your cursor over the cell.
46 ExcelLink
Relinking a Workbook
When opening an unlinked workbook, link users are automatically prompted to relink formulas in the workbook.
Click No to leave the workbook as is. You can relink formulas later, at any time, by clicking Relink on the
Mathematica Options Workbook tab.
Notes
Relinking formulas recalculates all Mathematica formulas in the workbook, overwriting the existing set of results.
If a workbook contains only Mathematica macros, the relink prompt will not appear. Macro buttons are relinked without prompting
since this has no other impact on the workbook.
If a workbook was not unlinked prior to opening it on another machine, broken path-based formula links can be fixed
automatically by clicking Relink under Mathematica Options Workbook.
This is possible, of course, only if the Mathematica Link add-in is available on that machine.
Notes
Fixing broken links recalculates all Mathematica formulas in the workbook, overwriting the existing set of results.
ExcelLink 47
Once installed, the Mathematica Link add-in adds special copy and paste commands to Excel. These commands convert
Excel data to and from Mathematica lists.
48 ExcelLink
Press Ctrl + Shift + C or right-click and choose Copy if Mathematica Contexts are enabled. This will copy the
contents of the range onto the Clipboard as a Mathematica list.
Switch to your Mathematica notebook and place the cursor where you would like to insert the list.
Notes
If the contents of the range were not converted into a Mathematica list, verify Mathematica keyboard shortcuts are enabled in
Excel. You can do this under Mathematica Options Interface.
By default, text cells are copied as Mathematica strings. Only cells formatted as Text are considered to contain Mathematica
expressions. See Strings. If needed, you can convert strings to expressions using ToExpression [data].
Empty cells are copied as the symbol Empty. If needed, you can convert these to a desired default value, such as 0 or "", using
ReplaceAll [data, Empty -> val].
ExcelLink 49
Switch to Microsoft Excel and select where to insert the contents of the list. If a single cell is selected, data will
be pasted below and to the right of that cell.
Press Ctrl + Shift + V or right-click and choose Paste if Mathematica contexts are enabled.
Notes
If nothing was pasted, verify Mathematica keyboard shortcuts are enabled in Excel. You can do this under Mathematica Options
Interface.
For best results, convert your data to Mathematica InputForm before pasting the data into Excel. You can do this in Mathematica
or using the Mathematica Clipboard window in Excel. See Fixing Problematic Data.
Be sure the opening and closing brackets of the Mathematica list are selected. Excel will not recognize the Clipboard contents as a
Mathematica list unless these brackets are present.
A convenient way to select an entire Mathematica list is to place the cursor at the beginning of the list and triple-click.
50 ExcelLink
The Paste command can fix certain common problems with the data automatically; however, in some cases you may still
need to convert to InputForm on your own.
In Excel, after copying, use the Evaluate button in the Mathematica Clipboard window.
If you do not want to modify your source notebook, the second approach is the most convenient.
Out[1]= 6.92556 10-9 , 5.23638 10-9 , 4.21124 10-9 , 4.61886 10-9 , 9.65829 10-10 ,
5.8988 10-9 , 4.26737 10-9 , 1.64441 10-9 , 1.50418 10-9 , 7.90577 10-9
To view this data in the Mathematica Clipboard window, copy the output, then in Excel, open the Mathematica Clipboard
window and click Get.
You can see that additional formatting characters are present in the data. In this case, the fixes are minor, so pasting
directly into Excel does, in fact, still work. However, you can also convert the contents of the Clipboard to InputForm by
clicking Evaluate.
Once the data has been standardized to InputForm , you can continue to paste it into Excel using the standard Paste
command or the Paste button on the Clipboard window.
Notes
An alternative to copying and pasting is to assign and retrieve Excel data programmatically from Mathematica. This can be signifi-
cantly faster if you are dealing with large datasets. For more information, see Getting Started.
52 ExcelLink
=EVAL(head, arg1, arg2, ...) builds an expression from the provided head and args and evaluates it.
You can use =EXPR(head, arg1, arg2, ...) to see exactly what will be evaluated in Mathematica.
=EVAL(head, arg1, arg2, ...) evaluates only once head and all arguments have been provided. If head or any argument refers to an empty
cell or an error, evaluation is suppressed and #N/A is returned.
EXPR
=EVAL(head, arg1, arg2, ...) builds an expression from the provided head and args and evaluates it.
=EXPR(head, arg1, arg2, ...) builds the Mathematica expression head[arg1, arg2, ...].
Example: =EXPR("Sqrt",EXPR("Plus",EXPR("Power",A1,2),EXPR("Power",A2,2))).
Example: =EXPR("Sqrt[#1^2+#2^2]",A1,A2).
=EXPR(head, arg1, arg2, ...) returns #N/A if head or any arguments refer to an empty cell or an error.
=EXPR(range) trims empty cells and errors from the end of range.
DATA
=EVAL(head, arg1, arg2, ...) builds an expression from the provided head and args and evaluates it.
The DATA function is typically used inside EVAL, EXPR, or RULE calls.
Example: =EVAL("FileNames",DATA("*"),DATA("C:\")).
You can wrap numeric data in the DATA function to ensure numeric calculation methods are used instead of symbolic methods. The
former is often much faster.
Example: =EVAL("Eigenvalues",DATA(A1:B2)).
Unlike EXPR ranges, DATA ranges can contain empty cells or errors.
=DATA(range) trims empty cells and errors from the end of range.
RULE
=EVAL(head, arg1, arg2, ...) builds an expression from the provided head and args and evaluates it.
The RULE function can be used to specify options for the Mathematica function in EVAL or EXPR calls.
Example: =EVAL("Plot",A1,A2:A4,RULE("PlotTitle",A1),RULE("PlotStyle","Blue")).
If lhs and rhs are references to multicell ranges of the same size, a list of rules is returned.
Example: =EVAL("ReplaceAll",A1,RULE(A2:A4,B2:B4)).
CALC
=EVAL(head, arg1, arg2, ...) builds an expression from the provided head and args and evaluates it.
Volatile functions recalculate when any cell changes or when the F9 key is pressed.
Excel functions RAND() and NOW() are examples of built-in volatile functions.
You can use the CALC worksheet function to use Mathematica-generated random numbers within Excel-based simulations.
Example: =CALC(EVAL("Random[Integer,{1,6}]")).
You can use the CALC worksheet function to "tag" specific functions to respond when F9 is pressed or when ExcelCalculate is
called from Mathematica code.
Note: volatile functions recalculate frequently and can, therefore, significantly slow down recalculation and editing operations in
your spreadsheet. To avoid any potential problems, use volatile functions sparingly and, if needed, disable them when making
modifications to your spreadsheets.
Toolbar Commands
Evaluate
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
Workbook options can be specified under the Mathematica Options Workbook tab.
Shift +click: closes the kernel.
Ctrl +click: clears the kernel's Global context. (Soft kernel reset)
Ctrl + Shift +click: closes and restarts the kernel. (Hard kernel reset)
Functions
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
If no link formula is selected, the Wizard starts at the Mathematica Function Browser step.
If an existing link formula is selected, the Wizard starts at the Mathematica Function Arguments step, and the Wizard is populated with
the existing formula.
Using the Wizard you can search for, learn about, and interactively build and edit Mathematica function calls.
Note: the Wizard is nonmodal. You can leave it open and still work in Excel.
Macros
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
Using this window, you can create code boxes and corresponding buttons that allow you to run Mathematica code as if it were an
Excel macro. Using this window, you can also create initialization code boxes for workbooks that contain code that is run automati-
cally when you connect to a kernel or reevaluate the workbook.
Note: the window is nonmodal. You can leave it open and still work in Excel.
Clipboard
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
Using this window, you can interactively copy and paste data to Excel ranges.
You can also type code directly into the Mathematica Clipboard window, evaluate it, and view the results.
Note: the window is nonmodal. You can leave it open and still work in Excel.
Contexts
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
When menus are enabled, if you right-click a range, a custom Mathematica Context menu will appear.
ExcelLink 57
When menus are disabled, if you right-click a range, the default Excel Context menu will appear.
Messages
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
Using this window, you can use view messages generated by the Mathematica kernel.
You can also locate the source of messages, browse through past messages, and save messages to a log file.
Note: the window is nonmodal. You can leave it open and still work in Excel.
Options
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
You can browse this window to explore link options available to you. If you change an option, but want to leave the window open,
click Apply to apply the changes.
Note: the window is nonmodal. You can leave it open and still work in Excel.
Help
Closes or resets the connection with a Mathematica kernel (depending on modifier key).
Contents of this manual can also be viewed in the Mathematica Documentation Center under Add-Ons & Links Mathematica
Link for Excel.
Context Commands
Expression
Toggle command. Applies or removes the Text number format from the selected range.
Contents of the range are automatically reentered after the format change.
If the number format for all cells is Text, the format for all cells is changed to General.
If the number format for all cells is not Text, the format for all cells is changed to Text.
Copy
Toggle command. Applies or removes the Text number format from the selected range.
If the number format for all cells is Text, strings are copied as Mathematica text expressions.
If the number format for all cells is not Text, strings are copied as Mathematica strings.
The copy command uses Mathematica InputForm to represent the contents of the range.
If the Mathematica Clipboard window is open, the window is automatically updated, allowing you to view what has been placed on
the Clipboard.
Paste
Toggle command. Applies or removes the Text number format from the selected range.
If the number format for all cells in the target range is Text, the contents of the Clipboard will be pasted as Mathematica text
expressions.
If the number format for all cells is not Text, the contents of the Clipboard will be converted to native Excel data types wherever
possible.
If the Mathematica Clipboard window is open, you can view the text expression before it is pasted.
The Paste command requires the contents of the Clipboard to be in Mathematica InputForm .
Note: If the expression on the Clipboard is not in InputForm , you can use the Mathematica Clipboard window to convert the
expression to InputForm by clicking Evaluate.
60 ExcelLink
Clear
Toggle command. Applies or removes the Text number format from the selected range.
When using this command, the number format for the range is reset to General. This is the only difference between this command
and the Excel standard Edit Clear Contents command.
Function
Toggle command. Applies or removes the Text number format from the selected range.
If the selected cell does not contain a link formula, the Wizard goes directly to the Mathematica Function Arguments step. This is
the only difference between this command and the Toolbar Command Functions command.
Use this command if you know what function you would like to enter, and you do not need to browse for it.
Array
Toggle command. Applies or removes the Text number format from the selected range.
When converting an array formula to a single-cell formula, you can select the top-left cell or the entire array.
When converting a single-cell formula to an array formula, the array formula is automatically sized correctly, or you can preselect
the cells you would like to be included in the array.
Comments
Toggle command. Applies or removes the Text number format from the selected range.
Commenting formulas allows you to temporarily disable evaluation of the selected formulas.
To comment all Mathematica formulas on a sheet, click the top-left corner of the header rows between A and 1 to select the entire
sheet.
To comment all Mathematica formulas in a workbook, click Unlink under Mathematica Options Workbook.
Recalculate
Toggle command. Applies or removes the Text number format from the selected range.
To force recalulation of all Mathematica formulas on a sheet, click the top-left corner of the header rows, between A and 1 to select
the entire sheet.
To force recalculation of all Mathematica formulas in the workbook, you can click Evaluate if your options are set to do so.
Keyboard Shortcuts
Toolbar Shortcuts
Keyboard shortcuts are available for all commands on the Mathematica toolbar. These toolbar shortcuts all include the Alt
key.
For descriptions of these commands, see the Toolbar Commands section in this reference guide.
Context Shortcuts
Keyboard shortcuts are available for all commands in the Mathematica context menu. Context shortcuts all include the
Shift key. They all operate on the current selection in Excel.
For descriptions of these commands, see the Context Commands section in this reference guide.
ExcelLink 63
Workbook Shortcuts
The functionality provided by some of these commands can optionally occur automatically as part of the Evaluate toolbar
command. Related options and buttons can be found on the Mathematica Options Workbook tab.
Notes
Keyboard shortcuts can be disabled and re-enabled using the Mathematica Options Interface tab.
64 ExcelLink
Data Types
Overview
Mathematica data types not natively supported by Excel can be stored as strings in a range formatted as Text.
Integer 1
Rational 1/2
Complex 1+2I
Symbol x
Expression x+y
To specify the format of a range, you can use the ExcelFormat function provided by the ExcelLink package. Or, from
within Excel, you can select a format in the Format Cell... Number pane or use the Expression toggle command
provided by the MathematicaLink add-in.
Notes
For worksheet functions, such as EVAL or EXPR, inputs are always assumed to contain text expressions, even if Text formatting
has not been applied to input ranges. This assumption makes it easier to build Mathematica expressions. To use data as it is
natively stored in Excel, wrap the reference to the data range with the DATA worksheet function.
When a number is stored as text in Excel, an error flag may appear on the cell. If you find these flags distracting, you can turn this
type of error checking off in the Tools Options... Error Checking pane.
ExcelLink 65
Numbers
Excel stores all numbers as machine-precision doubles. A number may appear to be an integer in Excel when no decimal
point is displayed, however internally the number is stored as a floating point. Whether a decimal point is displayed is a
matter of formatting. See Excel Number Formats for more information.
Maximum and minimum numbers that can be natively stored in Excel are defined by machine-precision limits.
$MaxMachineNumber 1.7976931348623157*^308
$MinMachineNumber 2.2250738585072014*^-308
Dates
Excel dates are stored as numbers where the integer part represents the day and the fractional part represents the time of
day.
What makes a number appear as a date in Excel is a matter of formatting. See Excel Number Formats for more
information.
Notes
Excel cells only format dates properly after March 1, 1900. Excel erroneously considers 1900 a leap year, and negative numbers
cannot be formatted as dates in Excel.
The ExcelForm function does not suffer from the same restrictions as Excel cells and can therefore be used to print out dates
before March 1, 1900.
Strings
In Excel, textual data can be entered into cells specifically formatted as Text. It can also be entered into cells with other
formats, such as General. MathematicaLink for Excel uses this formatting difference to distiguish between text expressions
and strings. If a cell is formatted as Text, the content of the cell is considered to be a Mathematica expression; otherwise,
the contents are considered to be a Mathematica string.
In Excel, the two versions of the string appear identical. However, there are significant behavioral differences between text
cells and other cells:
Strings assigned to nontext cells pass through an Excel interpreter. The interpreter checks to see if the string being
assigned appears to be a data type it knows about. If so, the string is converted to the identified data type and an appro-
priate cell format is automatically applied if needed.
Strings assigned to text cells do not pass through the Excel interpreter. They can therefore contain exact numbers,
rationals, or anything else that can be stored as a Mathematica expression.
As an example, if 1/2 is assigned to a cell with the General format, the rational is interpeted as January 2 of the curent
year, and a date format is automatically assigned to the cell. When 1/2 is assigned to a text cell, the fraction remains as
entered.
Notes
For worksheet functions, such as EVAL or EXPR, input ranges are always assumed to contain text expressions, even if the input
range has not been formated as Text. This assumption makes it easy to build Mathematica expressions. You can wrap data ranges
with the DATA worksheet function to treat text contained in the range as Mathematica strings.
Booleans
TRUE True
FALSE False
Errors
#N/A "#N/A"
#REF! "#REF!"
#VALUE! "#VALUE!"
#NULL! "#NULL!"
#NAME? "#NAME?"
#NUM! "#NUM!"
#DIV/0! "#DIV/0!"
Of these errors, four may be returned by Mathematica worksheet functions. In this case, the errors have the following
meanings.
Notes
For worksheet functions, such as EVAL or EXPR, the #N/A error suppresses further evaluation. To force a range containing empty
cells or errors to be evaluated in Mathematica, you can use the DATA function as an argument wrapper. DATA(range) is a data
range that may contain empty cells or errors. You can then handle the empty values and errors in your Mathematica code.
Empty
Mathematica Link for Excel handles empty cells differently depending on where the cells are located.
For empty cells to be trimmed, an entire trailing row or column within the range must contain nothing but empty cells.
Notes
The trimming of trailing empty cells allows you to easily work with entire rows and columns of data.
68 ExcelLink
Number Formats
Excel number formats allow you to define how a number will appear in your spreadsheet.
1000 General
1.0E+03 0.0E+00
$ 1,000.00 $ #,###.00
100000% 0%
Excel number formats are also used to format dates and time information that has been stored as a number.
12:00 hh:mm
For more examples of Excel number formats, browse the Custom category in the Format Cells Number pane in
Excel.
ExcelLink 69
ExcelLink Functions
ExcelActivate
ExcelActivate[book]
makes book the active book.
ExcelActivate[sheet]
makes sheet the active sheet.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelActivate[ExcelSheet["Book1","Sheet1"]]
In[3]:= ExcelContext[]
In[4]:= ExcelActivate["Sheet3"]
In[5]:= ExcelContext[]
In[6]:= ExcelActivate["Sheet1"]
In[7]:= ExcelContext[]
ExcelAddress
ExcelAddress[range]
returns the A1-style address of the specified range.
Examples
In[1]:= <<ExcelLink`
Out[2]= A1:C10
70 ExcelLink
ExcelBook
ExcelBook[id]
represents a workbook identified by id. The id can be Active, a name, a full path, or an index.
Details
The first workbook opened has position 1. The last workbook opened has position -1.
Once a workbook is saved, the .xls suffix is required to identify the workbook by name or path.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelBooks[]
In[3]:= ExcelName[ExcelBook[Active]]
Out[3]= Book1
In[4]:= ExcelNew[]
In[5]:= ExcelBooks[]
In[6]:= ExcelName[ExcelBook[1]]
Out[6]= Book1
In[7]:= ExcelName[ExcelBook[-1]]
Out[7]= Book2
In[8]:= ExcelClose[]
In[9]:= ExcelBooks[]
In[10]:= ExcelCheck[ExcelBook[2]]
Out[10]= False
ExcelLink 71
ExcelBooks
ExcelBooks[ ]
gives a list of workbooks currently open in Excel.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelBooks[]
In[3]:= ExcelNew[]
In[4]:= ExcelBooks[]
In[5]:= ExcelClose[]
ExcelCalculate
ExcelCalculate[ ]
causes all formula-based calculations in Excel to update.
Details
This function can be useful if Excel has been set to manual calculation mode or if volatile functions, such as random number
generators, are being used.
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelRead["A1"]
Out[3]= 0.0145436
In[4]:= ExcelCalculate[]
In[5]:= ExcelRead["A1"]
Out[5]= 0.0438649
In[6]:= ExcelClear["A1"]
ExcelCall
ExcelCall
is an internal function called by all functions that need to communicate with Excel.
72 ExcelLink
ExcelCheck
ExcelCheck[object]
checks if object is valid.
Details
If object is a range, the format can be "General", "Text", a number format, or "Mixed".
Examples
In[1]:= <<ExcelLink`
In[2]:= object=ExcelRange["Sheet1","A1"]
In[3]:= ExcelCheck[object]
Out[3]= True
In[4]:= object=ExcelRange["Bogus","A1"]
In[5]:= ExcelCheck[object]
Out[5]= False
In[6]:= object=ExcelSheet[1]
Out[6]= -Sheet: 1-
Out[7]= True
Out[8]= False
ExcelLink 73
ExcelClear
ExcelClear[range]
clears data from the specified range in Excel.
ExcelClear[sheet]
clears all data contained in the specified sheet.
Details
ExcelClear[All] and ExcelClear[Active] both clear all data on the active sheet.
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelClear["A:A"]
In[5]:= ExcelClear["Sheet1"]
ExcelClose
ExcelClose[ ]
closes the active workbook.
ExcelClose[book]
closes the specified book.
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelBooks[]
In[4]:= ExcelClose[book]
In[5]:= ExcelBooks[]
ExcelContext
ExcelContext[ ]
returns a list identifying the current active context.
ExcelContext[object]
returns a list identifying the context of the specified object.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelActivate["Book1"]
In[3]:= ExcelActivate["Sheet1"]
In[4]:= ExcelContext[]
In[5]:= object=ExcelRange["Book1","Sheet2","A1:C10"]
In[6]:= ExcelContext[object]
ExcelDate
ExcelDate[value]
converts an Excel date value to a date list {y, m, d, h, n, s}.
ExcelDate[{y, m, d, h, n, s}]
converts a date list to an Excel date value.
Details
Time of day information is provided by the fractional part of the date, where 0.5 represents noon.
Excel dates can be printed in various formats using the ExcelForm function.
Examples
In[1]:= <<ExcelLink`
In[2]:= d = Date[]
In[3]:= n = ExcelDate[d]
Out[3]= 38 909.5
ExcelLink 75
In[4]:= n // InputForm
Out[4]//InputForm= 38909.54778576389
Out[6]= 1:08 PM
In[7]:= ExcelDate[n]
ExcelDelete
ExcelDelete[sheet]
deletes the specified sheet.
ExcelDelete[shape]
deletes the specified shape.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSheets[]
In[3]:= ExcelInsert["Sheet"]
In[4]:= ExcelSheets[]
In[5]:= ExcelDelete[ExcelSheet[-1]]
In[6]:= ExcelSheets[]
ExcelDialog
ExcelDialog[type]
displays a dialog specified by type.
ExcelDialog[type, title]
displays a dialog with a custom title.
76 ExcelLink
Details
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelDialogs
In[3]:= ExcelDialog["Range"]
In[4]:= ExcelDialog["Open"]
In[5]:= ExcelDialog["Save"]
In[6]:= ExcelDialog["Files"]
In[7]:= ExcelDialog["Folder"]
ExcelDirectory
ExcelDirectory[name]
gives a directory specified by name.
ExcelDirectory[book]
gives the directory of the specified book.
Details
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelDirectory["Installation"]
In[5]:= ExcelDirectory[book]
In[6]:= ExcelClose[book]
ExcelFilter
ExcelFilter[range, None ]
turns off all filters for the specified range.
Details
The first filter is applied to the first field, the second filter to the second field, and so on.
Filters can be value strings such as "Q4", or comparison strings such as ">100".
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelOpen[s]
In[6]:= ExcelRead[rng]
Out[6]= {{City, State, Lat, Lon}, {Carson City, Nevada, 39.1667, -119.767}, {Elko, Nevada, 40.8333, -115.783},
{Ely, Nevada, 39.2833, -114.85}, {Las Vegas, Nevada, 36.0833, -115.167},
{Lovelock, Nevada, 40.0667, -118.55}, {Reno, Nevada, 39.5, -119.783},
{Tonopah, Nevada, 38.0667, -117.083}, {Winnemucca, Nevada, 40.9, -117.8}}
In[8]:= ExcelClose[s]
78 ExcelLink
ExcelFormat
ExcelFormat[target]
returns the format of target.
ExcelFormat[target, format]
sets the format of the target.
Details
The format can be "General", "Text", or a number format such as "$ #,###.00", "0.0%", or "yyyy-mm-dd hh:mm:ss".
The format can also be "AutoFit" to adjust column widths in target to display all contents.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelFormat["A1"]
Out[2]= General
In[4]:= ExcelFormat["A1","0.0%"]
In[5]:= ExcelFormat["A1"]
Out[5]= 0.0%
In[7]:= ExcelFormat["A1"]
Out[7]= hh:mm
In[9]:= ExcelFormat["A1"]
Out[9]= General
In[10]:= ExcelClear["A1"]
ExcelLink 79
ExcelForm
ExcelForm[expr]
prints expr as it would appear in Excel in "General" format.
ExcelForm[expr, format]
prints expr as it would appear in the specified format.
Details
The format can be specified using special characters such as "$ #,###.00", "0.0%", or "yyyy-mm-dd hh:mm:ss".
Examples
In[1]:= <<ExcelLink`
1
Out[2]= 3., 1.5 10-15 , , 3 + 5 , Hello, Empty, True, False
2
In[3]:= Map[ExcelForm, v]
In[4]:= n = ExcelDate[Date[]]
Out[4]= 38 909.6
Out[6]= 71.4%
Out[7]= 12,345
ExcelGraphic
ExcelGraphic[graphic, opts, ]
specifies options for how graphic should be displayed in Excel .
Details
Examples
In[1]:= <<ExcelLink`
Out[2]=
In[3]:= Excel["B3"] = g
In[4]:= Options[ExcelGraphic]
ExcelInsert
ExcelInsert[]
inserts a sheet in the active book.
ExcelInsert[name]
inserts a sheet with the specified name.
ExcelInsert[ExcelSheet [id]]
inserts the specified sheet.
ExcelInsert[ExcelShape [id]]
inserts the specified shape.
Details
Option Position can be used to specify the position where the new object is to be inserted.
Option Format can be used to specify the format of the inserted object.
For sheets, Format can be "Work", "Chart", or a reference to an existing sheet to use as a template.
For shapes, Format can be "Image", "Text", or a reference to an existing shape to use as a template.
ExcelLink 81
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSheets[]
In[3]:= ExcelInsert[]
In[4]:= ExcelSheets[]
In[5]:= ExcelDelete[ExcelSheet[-1]]
In[6]:= ExcelSheets[]
In[8]:= ExcelSheets[]
In[9]:= ExcelDelete[ExcelSheet[1]]
In[10]:= ExcelSheets[]
ExcelInstall
ExcelInstall[ ]
starts communications with Excel.
Details
Option Visible specifies if a visible instance of Excel is used. The default is Visible -> Automatic .
If Visible is Automatic , a visible instance of Excel must already be open to start communications.
If Visible is False , a hidden instance of Excel is launched for private use by Mathematica.
By default, ExcelInstall[] is called the first time communication with Excel is required.
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelNew[]
In[4]:= ExcelBooks[]
In[5]:= ExcelClose[]
In[6]:= ExcelUninstall[]
In[7]:= ExcelInstall[Visible->False]
In[8]:= ExcelNew[]
In[9]:= ExcelBooks[]
In[10]:= ExcelUninstall[]
ExcelName
ExcelName[object]
returns the name of the specified object.
Examples
In[1]:= <<ExcelLink`
Excel
Excel[id]
identifies a location to read or write from in Excel.
Excel[id]
reads the contents of id.
Excel[id] = expr
writes expr to id.
Excel[id] =.
clears the contents of id.
Details
The id can be a name, A1-style address, All , Selection, or an Excel object reference.
Excel object references can be used to provide a specific context for id or to specify a different type of id.
Examples
In[1]:= <<ExcelLink`
In[3]:= Excel["A1:C3"]
Out[3]= {{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}
In[4]:= Excel["A1:C3"] =.
In[8]:= Dimensions[data]
In[9]:= Excel["Sheet1"] =.
84 ExcelLink
ExcelNew
ExcelNew[ ]
creates a new workbook with the default number of sheets.
ExcelNew[i]
creates a book with i sheets.
ExcelNew[{name1 , name2 , }]
creates a book with the specified named sheets.
ExcelNew[book.xls]
creates a book using the specified existing book as a template.
Details
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelBooks[]
In[3]:= ExcelNew[]
In[4]:= ExcelClose[]
Out[5]= {2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010}
In[6]:= ExcelNew[v]
In[7]:= ExcelClose[]
In[9]:= ExcelNew[s]
In[10]:= ExcelClose[]
ExcelLink 85
ExcelObject
ExcelObject[type, id]
represents an object of the specified type identified by id in the active context.
Details
Examples
In[1]:= <<ExcelLink`
In[3]:= InputForm[object]
In[5]:= InputForm[object]
ExcelOffset
Details
All specifies that range should be offset to the end of contiguous data in that dimension.
Examples
In[1]:= <<ExcelLink`
In[7]:= ExcelClear["A:A"]
ExcelOpen
ExcelOpen[book.xls]
opens the specified book in Excel.
Details
Newer Excel file formats such as .xlsx, .xlsm, and .xlsb files are also supported.
Examples
In[1]:= <<ExcelLink`
ExcelOutput
ExcelOutput[expr, opts]
specifies options for how expr should be output in Excel.
Details
Excel [id] = form[expr] displays expr in the specified form using default options.
Examples
In[1]:= <<ExcelLink`
Out[2]= x5 + 5 x4 y + 10 x3 y2 + 10 x2 y3 + 5 x y4 + y5
In[4]:= Options[ExcelOutput]
In[6]:= Excel["B8"] =.
ExcelPosition
ExcelPosition[range]
returns the position of the top-left cell of range as a {row, col} index pair.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelPosition["C10"]
Out[2]= {10, 3}
In[3]:= ExcelPosition["A1:C10"]
Out[3]= {1, 1}
ExcelRange
ExcelRange[id]
represents a range identified by id in the active context.
ExcelRange[sheet, id]
represents a range in the specified sheet.
Details
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSelect[ExcelRange["A1:C5"]]
In[3]:= ExcelAddress[ExcelRange[Selection]]
Out[3]= A1:C5
Out[4]= A1
In[5]:= ExcelAddress[ExcelRange[{{1,1},{5,3}}]]
Out[5]= A1:C5
In[6]:= ExcelSize[ExcelRange[All]]
ExcelRanges
ExcelRanges[ ]
gives a list of named ranges in the active sheet.
ExcelRanges[sheet]
gives a list for the specified sheet.
ExcelRanges[book]
gives a list of all named ranges in book.
Examples
In[1]:= <<ExcelLink`
In[4]:= ExcelRanges[]
Out[6]= {{Stocks.xls, AAPL}, {Stocks.xls, ADP}, {Stocks.xls, AIG}, {Stocks.xls, BLDP}, {Stocks.xls, CSCO},
{Stocks.xls, IBM}, {Stocks.xls, JNJ}, {Stocks.xls, MSFT}, {Stocks.xls, SYY}, {Stocks.xls, WMT}}
In[7]:= ExcelClose[book]
ExcelRead
ExcelRead[range]
reads data from the specified range in Excel.
ExcelRead[sheet]
reads all data contained in the specified sheet.
ExcelRead[shape]
reads the contents of the specified shape.
Details
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelWrite["A1:C3",IdentityMatrix[3]]
In[3]:= ExcelRead["A1:C3"]
Out[3]= {{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}
In[4]:= ExcelRead["A:C"]
Out[4]= {{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}
In[5]:= ExcelRead["Sheet1"]
Out[5]= {{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}
In[6]:= ExcelClear["A1:C3"]
90 ExcelLink
ExcelRefresh
ExcelRefresh[ ]
refreshes all external data queries and pivot tables in the active book.
ExcelRefresh[book]
refreshes the specified book.
Details
External data sources can include text files, web pages, or databases.
To set up an external data query in Excel, use the Data Import External Data commands.
Examples
In[1]:= <<ExcelLink`
In[3]:= ExcelOpen[s]
In[4]:= ExcelRefresh[]
In[6]:= ExcelClose[s]
ExcelRename
ExcelRename[sheet, name]
renames the specified sheet.
ExcelRename[shape, name]
renames the specified shape.
Examples
In[1]:= <<ExcelLink`
ExcelResize
ExcelResize[range, All ]
resizes range to include all contiguous data.
Details
All specifies that range should be extended to include all contiguous data in that dimension.
Examples
In[1]:= <<ExcelLink`
In[8]:= ExcelClear["A1:C10"]
92 ExcelLink
ExcelResult
ExcelResult
is an internal function used to return lengthy results to Excel .
Details
Options [ExcelResult] gives a list of options that affect how results are returned.
Examples
In[1]:= <<ExcelLink`
In[2]:= Options[ExcelResult]
Out[3]= 0.134218+ 1.50995 x + 7.54975 x2 + 22.0201 x3 + 41.2877 x4 + 51.6096 x5 + 43.008 x6 + 23.04 x7 + 7.2 x8 + x9
In[4]:= StringLength[ToString[InputForm[expr]]]
Out[4]= 205
In[5]:= ExcelForm[expr]
In[7]:= ExcelForm[expr]
Out[7]= ExcelResult[1]
In[10]:= ExcelForm[expr]
ExcelRun
ExcelRun[macro]
runs the specified VBA macro in Excel.
Examples
If the ExcelLink add-in is currently loaded in Excel, this displays the Mathematica Clipboard window.
In[1]:= <<ExcelLink`
In[2]:= ExcelRun["MathematicaClipboard"]
ExcelSave
ExcelSave[ ]
saves changes to the active workbook.
ExcelSave[book]
saves changes to the specified book.
ExcelSave[book, book.xls]
saves changes as book.xls.
Details
Newer Excel file formats such as .xlsx, .xlsm, and .xlsb files are also supported.
Examples
In[1]:= <<ExcelLink`
In[6]:= ExcelClose[book]
In[7]:= DeleteFile[s]
94 ExcelLink
ExcelSelect
ExcelSelect[range]
selects the specified range.
ExcelSelect[shape]
selects the specified shape.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelContext[]
In[4]:= ExcelContext[Selection]
In[5]:= ExcelAddress[Selection]
Out[5]= B2:D5
ExcelShape
ExcelShape[id]
represents a shape identified by id in the active context.
ExcelShape[sheet, id]
represents a shape in the specified sheet.
Details
The first shape inserted on a sheet has position 1. The last shape inserted on a sheet has position -1.
Examples
In[1]:= <<ExcelLink`
In[4]:= ExcelShapes[]
In[5]:= ExcelName[ExcelShape[1]]
Out[5]= Rectangle 1
In[6]:= ExcelName[ExcelShape[-1]]
Out[6]= Rectangle 2
In[7]:= ExcelSelect[ExcelShape[1]]
In[8]:= ExcelName[ExcelShape[Selection]]
Out[8]= Rectangle 1
In[9]:= ExcelCheck[ExcelShape[5]]
Out[9]= False
In[10]:= ExcelDelete[shape1]
In[11]:= ExcelDelete[shape2]
ExcelShapes
ExcelShapes[ ]
gives a list of supported shapes in the active sheet.
ExcelShapes[sheet]
gives a list for the specified sheet.
ExcelShapes[book]
gives a list of all supported shapes in book.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelShapes[]
Out[2]= {}
In[4]:= ExcelShapes[]
In[5]:= ExcelDelete[shape]
96 ExcelLink
ExcelShare
ExcelShare[]
starts kernel sharing with Excel on a link named "ExcelShare".
Details
You must have the Mathematica Link add-in loaded in Excel to share a kernel with Excel.
In Excel, if your Mathematica Connection is set to "Automatic", the Mathematica Link add-in will first try to connect to a link
named "ExcelShare" and then launch its own kernel if a link with that name is not available.
In Excel, if your Mathematica Connection is set to "Shared", the Mathematica Link add-in will try to connect to a link
"ExcelShare" and fail if a link with that name is not available.
Anytime you close a connection from the Excel side, you need to call ExcelShare[] again in Mathematica before starting a new
shared kernel session.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelShare[]
Once you have connected from the Excel side, you can share definitions of data between Excel and Mathematica
In[3]:= x
Out[3]= 100
The above assumes you defined x as 100 in Excel using a formula, macro, or the clipboard.
ExcelSheet
ExcelSheet[id]
represents a sheet identified by id in the active context.
ExcelSheet[book, id]
represents a sheet in the specified book.
Details
The first sheet in the workbook has position 1. The last sheet in the workbook has position -1.
ExcelLink 97
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSheets[]
In[3]:= ExcelName[ExcelSheet[1]]
Out[3]= Sheet1
In[4]:= ExcelName[ExcelSheet[-1]]
Out[4]= Sheet3
In[5]:= ExcelName[ExcelSheet[Active]]
Out[5]= Sheet1
In[6]:= ExcelCheck[ExcelSheet[5]]
Out[6]= False
ExcelSheets
ExcelSheets[ ]
gives a list of sheets in the active workbook.
ExcelSheets[book]
gives a list for the specified book.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSheets[]
In[4]:= ExcelSheets[]
In[5]:= ExcelDelete[sheet]
98 ExcelLink
ExcelSize
ExcelSize[range]
returns the size of range as {rows, cols}.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelSize["A1:C10"]
Out[2]= {10, 3}
ExcelStatus
ExcelStatus[text]
displays text in the status bar in Excel .
ExcelStatus[ ]
restores the status bar to its default state.
Examples
In[1]:= <<ExcelLink`
ExcelTypeset
ExcelTypeset[expr, opts, ]
specifies options for how expr should be typeset in Excel .
Details
Excel [id] = form[expr] displays expr in the specified form using default options.
Examples
In[1]:= <<ExcelLink`
Out[2]= 4 + 4 3 + 6 2 2 + 4 3 + 4
ExcelLink 99
In[4]:= Options[ExcelTypeset]
In[6]:= Excel["B3"] =.
ExcelUninstall
ExcelUninstall[ ]
ends communications with Excel .
Details
Option Visible specifies if visible instances of Excel should be closed when the link is uninstalled. The default is
Visible -> Automatic .
If Visible is Automatic , visible instances of Excel are closed if no workbooks are open.
If Visible is True , visible instances are always closed and unsaved changes to open workbooks are discarded.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelInstall[Visible->False]
In[3]:= $ExcelLink
In[4]:= ExcelUninstall[]
In[5]:= $ExcelLink
ExcelUnshare
ExcelUnshare[]
ends kernel sharing with Excel .
Details
Calling ExcelUnshare[] from a Mathematica session is not required. There is no harm in leaving the shared link open once it is
established.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelShare[]
Out[2]= LinkObject[ExcelShare, 2, 2]
In[3]:= $ExcelShare
Out[3]= LinkObject[ExcelShare, 2, 2]
In[4]:= ExcelUninstall[]
In[5]:= $ExcelShare
ExcelWrite
ExcelWrite[range, data]
writes data to the specified range in Excel .
ExcelWrite[sheet, data]
fills sheet with data.
ExcelWrite[range, graphic]
displays a graphic at the specified range location.
ExcelWrite[range, form]
displays the expression form at the specified range location.
ExcelWrite[shape, graphic]
displays a graphic to the specified shape.
ExcelWrite[shape, form]
displays the expression form to the specified shape.
ExcelWrite[shape, text]
writes text to the specified shape.
Details
If data does not completely fill the range, remaining cells are cleared.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelWrite["A1", 1]
In[9]:= ExcelClear["Sheet1"]
From In[10]:=
In[11]:= ExcelClear["A1"]
ImageFormat
ImageFormat
is an option to ExcelGraphic , ExcelTypeset , and ExcelOutput .
MaxCharacters
MaxCharacters
is an option to ExcelResult .
ToExcel
ToExcel
is an internal function used by the link to convert expressions into a form suitable for use in Excel .
$ExcelDialogs
$ExcelDialogs
gives a list of supported named dialogs that can be used with the ExcelDialog function.
Examples
In[1]:= <<ExcelLink`
102 ExcelLink
In[2]:= $ExcelDialogs
$ExcelDirectories
$ExcelDirectories
gives a list of supported special directories that can be used with the ExcelDirectory function.
Details
"Home" is the default file location in Excel. This is specified in Excel under Tools Options... General.
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelDirectories
$ExcelGraphic
$ExcelGraphic
is an internal counter used to display graphics in Excel .
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelGraphic
Out[2]= 0
ExcelLink 103
Out[3]=
In[4]:= ExcelForm[g]
Out[4]= ExcelGraphic[1]
In[5]:= $ExcelGraphic
Out[5]= 1
$ExcelLink
$ExcelLink
gives the LinkObject being used to communicate with Excel .
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelLink
In[3]:= ExcelInstall[]
In[4]:= $ExcelLink
In[5]:= ExcelUninstall[]
In[6]:= $ExcelLink
$ExcelOutput
$ExcelOutput
is an internal counter used to display formatted output in Excel .
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelOutput
Out[2]= 0
104 ExcelLink
Out[3]//BaseForm= 10102
In[4]:= ExcelForm[expr]
Out[4]= ExcelOutput[1]
In[5]:= $ExcelOutput
Out[5]= 1
$ExcelResult
$ExcelResult
is an internal counter used to return lengthy results to Excel .
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelResult
Out[2]= 0
In[4]:= ExcelForm[expr]
Out[4]= ExcelResult[1]
In[5]:= $ExcelResult
Out[5]= 1
$ExcelShare
$ExcelShare
gives the LinkObject being used to share a kernel session with Excel.
Examples
In[1]:= <<ExcelLink`
In[2]:= ExcelShare[]
Out[2]= LinkObject[ExcelShare, 2, 2]
In[3]:= $ExcelShare
Out[3]= LinkObject[ExcelShare, 2, 2]
ExcelLink 105
$ExcelTypeset
$ExcelTypeset
is an internal counter used to display typeset equations in Excel.
Examples
In[1]:= <<ExcelLink`
In[2]:= $ExcelTypeset
Out[2]= 0
Out[3]//TraditionalForm=
5 x4 5 x3 5 x2 5x 1
x5 + + + + +
2 2 4 16 32
In[4]:= ExcelForm[expr]
Out[4]= ExcelTypeset[1]
In[5]:= $ExcelTypeset
Out[5]= 1