MATLAB 与 Microsoft Excel链接
MATLAB 与 Microsoft Excel链接
Spreadsheet Link (for Microsoft Excel)
1. matlabinit
matlabinit初始化 Spreadsheet Link™ 软件并启动 MATLAB。如果电子表格链接软件已初始化并且 MATLAB 正在运行,则后续调用不会执行任何操作。用于在将首选项设置为 时手动启动电子表格链接和 MATLAB 会话
从 Excel 工具栏初始化电子表格链接和 MATLAB Microsoft
当您使用Microsoft Excel,初始化电子表格链接,并随时使用 Excel 工具栏手动启动 MATLAB。
在 “开发工具”选项卡上的“代码”组中,单击“宏”。
在“宏名称”框中,输入并单击“运行”。matlabinit
电子表格链接初始化,MATLAB 启动。您现在可以使用电子表格链接从 MATLAB 导入数据,或将工作表中的现有数据导出到 MATLAB 中,并在 Excel 中运行 MATLAB 函数。
1.1 技巧
- 您可以将函数包含在宏中 子程序。
matlabinit - 不能将函数作为工作表运行 单元格公式或宏函数。 是一个宏 子程序。子例程不能作为工作表单元格中的函数运行。只 Excel 函数可以在工作表单元格中运行。
matlabinitmatlabinit
1.2 替代功能
您可以执行 MLOpen 来启动 MATLAB。
1 | = MLOpen()%启动 MATLAB 进程。用于在给定的 MATLAB 会话中停止后重新启动该会话 |
启动 MATLAB 会话
从工作表启动 MATLAB 会话:
MLOpen()
2. 输出参数
全部折叠
out — 成功指示器0 | 字符串标量
0如果命令成功。否则,包含错误的字符串 法典。
3. MLPutMatrix
1 | = MLPutMatrix(var_name, mdat) %使用 中指定的数据创建或覆盖 MATLAB 工作区中的矩阵。函数创建,如果它不 存在。直接在工作表中工作时使用此语法 |
= MLPutMatrix(var\_name,mdat) 使用 中指定的数据创建或覆盖 MATLAB 工作区中的矩阵。函数创建,如果它不 存在。*直接在工作表中工作时使用此语法。*var_name®mdatMLPutMatrixvar_name
创建 MATLAB 矩阵
在 MATLAB 工作区中创建一个矩阵,使用 Excel工作表。MLPutMatrix®
在单元格中输入值 1 到 5。A1E1
通过 定义单元格区域的名称。有关定义的说明 名称,请参阅 Excel 帮助。testDataA1E1
范围名称显示在 “名称”中 框,以选择范围。testData
https://ww2.mathworks.cn/help/releases/R2023a/exlink/excel_named_range.png
在单元格中执行函数。 用作要创建的矩阵的名称。将区域名称指定为要包含在矩阵中的数据。
1 | = MLPutMatrix("A", testData) |
按 Enter 后,Excel 会在 MATLAB 工作区中创建矩阵。矩阵包含单元格区域中包含的数据。testData
使用 VBA 宏创建 MATLAB 矩阵
使用 VBA 中的函数在 MATLAB 工作区中创建矩阵 宏观。MLPutMatrix
在单元格中输入值 1 到 5。A1E1
通过 定义单元格区域的名称。有关定义的说明 名称,请参阅 Excel 帮助。testDataA1E1
范围名称显示在 “名称”中 框,以选择范围。testData
https://ww2.mathworks.cn/help/releases/R2023a/exlink/excel_named_range.png
在 Excel 中的“开发工具” 选项卡上,单击“代码”组中的“Visual Basic”。将打开“Visual Basic 编辑器”窗口。
选择 “插入>模块”以插入新模块。在模块1窗口中,输入此VBA代码 包含名为 的宏。
1 | Sub PutMatrix() |
宏使用该函数使用单元格区域中的数据在 MATLAB 工作区中创建矩阵。PutMatrixMLPutMatrixAtestData
有关使用模块的详细信息,请参阅 Excel 帮助。
选择任何工作表单元格。通过单击“运行”运行宏 子/用户窗体 VBA 工具栏上的按钮。有关运行宏的详细信息, 请参阅 Excel 帮助。
该函数在 MATLAB 工作区中创建矩阵。MLPutMatrix
4. 输入参数
var_name — MATLAB 矩阵字符串的名称
要创建或覆盖的 MATLAB 矩阵的名称,指定为字符串。
var_name在引号中直接指定矩阵名称。 不带引号指定工作表单元格地址(或 范围名称),其中包含矩阵名称。var_name
例: "A"
mdat — 数据字符串的位置
要复制到var\_name中的数据的位置,指定为 字符串。
mdat必须是工作表单元格地址或区域名称。不要 将位置括在引号中。
**例:**testData
**例:**A1
5. 技巧
中的空数字数据单元格在 由 标识的 MATLAB 矩阵。
mdatvar_name如果 的任何元素包含字符串数据,则成为 MATLAB 单元数组。中的空字符串元素在 MATLAB 单元数组中变为 s。
mdatmdatmdatNaN在子例程中使用时,请指出 工作表数据使用
MLPutMatrixMicrosoft Excel®宏观。例如:Range1
2
3Sub test()
MLPutMatrix "a", Range("A1:A3")
End Sub如果工作表中有命名区域,则可以指定名称而不是 范围。例如:
1 | Sub test() |
5.1 excel中创建 MATLAB 矩阵
1 | = MLPutMatrix("A", testData) |
按 Enter 后,Excel 会在 MATLAB 工作区中创建矩阵。矩阵包含单元格区域中包含的数据。testData
5.2 使用 VBA 宏创建 MATLAB 矩阵
1 |
|
6. MLPutRanges
1 |
|
Microsoft Visual Basic 宏中将 Excel 命名范围导出到 MATLAB Microsoft 无输出
调用函数以发送命名范围中的数据 当前工作表到 MATLAB。
MLPutRanges
Microsoft Visual Basic 宏中将 Excel 命名范围导出到 MATLAB Microsoft 带输出
调用函数以发送命名范围中的数据 当前工作表到 MATLAB。
out = MLPutRanges()
out如果函数成功,则返回 0 或带有相应错误代码的字符串(如果函数失败)
7. MLGetMatrix
1 | = MLGetMatrix(var_name,edat) %将 MATLAB 矩阵的内容写入 Excel 工作表中,从左上角由 指定的单元格开始 |
7.1 直接使用位置将矩阵内容写入工作表
在 MATLAB 中访问矩阵的内容并将内容写入工作表。指定名称 矩阵和目标单元格显式。
在 MATLAB 中定义一个 4×3 矩阵。
1 | A = [1,2,3;4,5,6;7,8,9;10,11,12] |
1 | A = |
打开 Excel 并确保在 工作表。要从工作表的单元格开始编写 MATLAB 矩阵的内容,请输入此 单元格中的文本,然后按 Enter 键:
1 | = MLGetMatrix("A","Sheet1!A3") |
使用位置间接将矩阵内容写入工作表
在 MATLAB 中访问矩阵的内容并将内容写入工作表。指定目标 使用单元格引用的矩阵内容。
在 MATLAB 中定义一个 4×3 矩阵。A
1 | A = [1,2,3;4,5,6;7,8,9;10,11,12] |
1 | A = |
打开 Excel 并在单元格中输入矩阵的名称。
https://ww2.mathworks.cn/help/releases/R2023a/exlink/excel-ml-get-matrix-indirect-output-a.png
在单元格 中输入目标单元格的引用。
https://ww2.mathworks.cn/help/releases/R2023a/exlink/excel-ml-get-matrix-indirect-output-a6.png
确保已选择单元格。访问由单元格中的字符串命名的 MATLAB 矩阵,然后 通过使用 中的引用将矩阵的内容写入工作表 细胞。在单元格中输入此文本,然后按 Enter 键:
1 | = MLGetMatrix(A1,A2) |
使用VBA宏将矩阵内容写入工作表
在 MATLAB 中访问矩阵的内容,并使用 VBA 宏将内容写入工作表。
在 MATLAB 中定义一个 4×3 矩阵。
1 | A = [1,2,3;4,5,6;7,8,9;10,11,12] |
1 | A = |
在 Excel 中的“开发工具” 选项卡上,单击“代码”组中的“Visual Basic”。将打开“Visual Basic 编辑器”窗口。
从“插入”菜单中,选择 “ 模块”以插入新模块。在模块1中 窗口中,输入此VBA代码,其中包含一个名为.
1 | Sub GetMatrix() |
MatlabRequest初始化内部电子表格链接™变量并使其正常工作 在子例程中
1 | = MLEvalString(command) %指定 用于在 MATLAB 工作区中求值的 MATLAB 命令。 在工作表单元格中工作时使用此语法 |
在工作表单元格中创建对角矩阵
在单元格中输入变量。 在从 到 的单元格范围内输入数字 1 到 5。
使用 将单元格区域分配给 MATLAB 中的变量。 在单元格中输入此文本。
1 | =MLPutMatrix(A1,B1:F1) |
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlevalstring_example_setup.png
用于创建矩阵 , 包含使用变量中的五个数字的对角线。 在单元格中输入此文本。
1 | =MLEvalString("b = diag(a);") |
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlevalstring_example.png
将矩阵从 MATLAB 检索到 Excel 单元格中。在单元格中输入此文本。
=MLGetMatrix("b","A9")
具有对角线的矩阵通过 出现在单元格中。
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlevalstring_example_result.png
在VBA宏中创建对角矩阵
在单元格中输入变量。 在从 到 的单元格范围内输入数字 1 到 5。
单击 “开发人员”选项卡Microsoft Excel®, ,然后单击“Visual Basic”。
插入一个新模块并将此VBA代码输入到代码中 部分。此示例代码假定名为 的宏。 有关使用模块的详细信息,请参阅 Excel 帮助。Diagonal
1 | Sub Diagonal() |
通过单击 “运行子/用户窗体”来运行宏 (F5)。 对角矩阵通过出现在单元格中。
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlevalstring_example_vba.png
无效命令的返回错误
在单元格中输入变量。 在从 到 的单元格范围内输入数字 1 到 5。aA1B1F1
单击Microsoft中的 “开发工具”选项卡 卓越, ,然后单击“Visual Basic”。The Visual Basic Editor 窗口打开。
插入一个新模块并将此无效的VBA代码输入到 窗口的“代码”部分。此示例代码假定名为 的宏。 有关使用模块的详细信息,请参阅 Excel 帮助。Diagonal
1 | Sub Diagonal() |
通过单击“运行子/用户窗体”来运行宏 VBA 工具栏。有关运行宏的详细信息,请参阅 Excel 帮助。
此电子表格链接™错误显示:。要显示 MATLAB 错误,请参阅 MLShowMatlabErrors。\#COMMAND!
8. MLGetFigure
1 | = MLGetFigure(width, height) %将当前 MATLAB 图形导入到 Excel 工作表中,将图形的左上角放在当前 工作表单元格。在 Excel 中指定图形的规范化宽度和高度 |
将当前 MATLAB 图形导入 Excel 中
在 MATLAB 中创建图形后,将该图形导入到 Excel 工作表中。
注意
如果使用 Excel 2007 或 2010,则导入图的宽度和高度 将是原始图形大小的四分之一。
在 MATLAB 中使用峰值和冲浪函数创建线框网格。图的 窗口显示线框网格。
z = peaks(25);surf(z)
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlgetfigure_surf.png
打开 Excel 并确保在 工作表。使用该函数将当前图形导入工作表。在单元格中输入此文本 ,然后按回车键。A1MLGetFigure
= MLGetFigure(.8, .8)
该函数导入当前图形 到工作表中,将图形的左上角放在 选定的单元格。MLGetFigure
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlgetfigure_imported.png
使用VBA宏导入当前图形
在 MATLAB 中创建图形后,使用 VBA 宏将该图形导入到 Excel 工作表中。
在 MATLAB 中使用峰值和冲浪函数创建线框网格。图的 窗口显示线框网格。
1 | z = peaks(25); |
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlgetfigure_surf.png
在 Excel 中的“开发工具” 选项卡上,单击“代码”组中的“Visual Basic”。将打开“Visual Basic 编辑器”窗口。
选择 “插入>模块”以插入新模块。在“模块1”窗口中,输入此VBA 包含名为 的宏的代码。MyFigure
1 | Sub MyFigure() |
宏使用该函数导入当前图形 到工作表中。 初始化内部 电子表格链接™变量并启用到 子例程中的函数。
选择图形位置的单元格。运行 通过单击宏 运行子/用户窗体 VBA上的按钮 工具栏。
该函数导入当前图形 到工作表中,将图形的左上角放在 选定的单元格。MLGetFigure
https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlgetfigure_vba_imported.png
9. 输入参数
全部折叠
width —宽度实数
导入 Excel 工作表时 MATLAB 图形的宽度(以标准化单位表示),指定为实数。
**例:**0.5
height —高度实数
导入 Excel 工作表时 MATLAB 图形的高度(以标准化单位表示),指定为实数。
**例:**0.5
MLAutoStart | MLOpen
1 | = MLAutoStart(flag) %自动设置 启动电子表格链接™和 MATLAB 软件。状态更改将在下次启动 Excel 会话时生效。直接在 工作表 |
取消电子表格链接和 MATLAB 的自动启动
在工作表中输入以下命令:
MLAutoStart("no")
电子表格链接和 MATLAB 不会在后续的 Excel 会话中启动 调用。
10. 输入参数
flag — 自动启动指定“是” (默认) | “不”
要么 ."yes""no"
指定每次自动启动电子表格链接和 MATLAB 软件"yes"Microsoft Excel®会话开始。指定取消 电子表格链接和 MATLAB 软件的自动启动。"no"
11. 输出参数
out — 成功指示器0 | 字符串标量
0如果命令成功。否则,字符串 包含错误代码。
