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。

MLOpen

1
2
3
= MLOpen()%启动 MATLAB 进程。用于在给定的 MATLAB 会话中停止后重新启动该会话
MLOpen %启动 MATLAB 进程。用于在给定Microsoft中停止 MATLAB 会话后重新启动该会话 Excel会话。在 VBA 宏中使用此语法。
out = MLOpen() %允许您在以下情况下捕获错误 在 VBA 宏中执行。如果失败,则是一个包含错误代码的字符串。否则,

启动 MATLAB 会话

从工作表启动 MATLAB 会话:

MLOpen()

2. 输出参数

全部折叠

out— 成功指示器0 | 字符串标量

0如果命令成功。否则,包含错误的字符串 法典。

3. ​MLPutMatrix

1
2
3
= MLPutMatrix(var_name, mdat) %使用 中指定的数据创建或覆盖 MATLAB 工作区中的矩阵。函数创建,如果它不 存在。直接在工作表中工作时使用此语法
MLPutMatrix var_name, mdat % 使用 中指定的数据创建或覆盖 MATLAB 工作区中的矩阵。用 VBA 宏中的此语法
out = MLPutMatrix(var_name,mdat) %允许您在 VBA 宏中执行时查找错误。如果失败,则是一个包含 错误代码。

= MLPutMatrix(var\_namemdat​ 使用 中指定的数据创建或覆盖 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
2
3
Sub PutMatrix()
MLPutMatrix "A", testData
End Sub

宏使用该函数使用单元格区域中的数据在 MATLAB 工作区中创建矩阵。PutMatrixMLPutMatrixAtestData

有关使用模块的详细信息,请参阅 Excel 帮助。

选择任何工作表单元格。通过单击“运行”运行宏 子/用户窗体 VBA 工具栏上的按钮。有关运行宏的详细信息, 请参阅 Excel 帮助。

该函数在 MATLAB 工作区中创建矩阵。MLPutMatrix

4. 输入参数

var_name— MATLAB 矩阵字符串的名称

要创建或覆盖的 MATLAB 矩阵的名称,指定为字符串。

var_name​在引号中直接指定矩阵名称。 不带引号指定工作表单元格地址(或 范围名称),其中包含矩阵名称。var_name

例:"A"

mdat— 数据字符串的位置

要复制到var\_name中的数据的位置,指定为 字符串。

mdat必须是工作表单元格地址或区域名称。不要 将位置括在引号中。

**例:**​testData

**例:**​A1

5. 技巧

  • 如果var\_name​存在,则函数 将其内容替换为 MDAT​ 的内容。MLPutMatrix

  • 中的空数字数据单元格在 由 标识的 MATLAB 矩阵。mdatvar_name

  • 如果 的任何元素包含字符串数据,则成为 MATLAB 单元数组。中的空字符串元素在 MATLAB 单元数组中变为 s。mdatmdatmdatNaN

  • 在子例程中使用时,请指出 工作表数据使用MLPutMatrix​Microsoft Excel®宏观。例如:Range

    1
    2
    3
    Sub test()
    MLPutMatrix "a", Range("A1:A3")
    End Sub

    如果工作表中有命名区域,则可以指定名称而不是 范围。例如:

1
2
3
Sub test() 
MLPutMatrix "a", Range("temp")
End Sub

5.1 excel中创建 MATLAB 矩阵

1
= MLPutMatrix("A", testData)

Enter 后,Excel 会在 MATLAB 工作区中创建矩阵。矩阵包含单元格区域中包含的数据。testData

5.2 使用 VBA 宏创建 MATLAB 矩阵

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

%在 MATLAB 工作区中创建一个矩阵,使用 Excel工作表。在单元格中输入值 1 到 5。
通过 定义单元格区域的名称。在单元格中执行函数。 用作要创建的矩阵的名称。将区域名称指定为要包含在矩阵中的数据。按 Enter 后,Excel 会在 MATLAB 工作区中创建矩阵。矩阵包含单元格区域中包含的数据。范围名称显示在“名称”中 框,以选择范围。testData
Sub PutMatrix()
MLPutMatrix "A", testData
End Sub

Sub test()
MLPutMatrix "a", Range("A1:A3")
End Sub

%如果工作表中有命名区域,则可以指定名称而不是 范围
Sub test()
MLPutMatrix "a", Range("temp")
End Sub

6. ​MLPutRanges

1
2
3
4

= MLPutRanges()
MLPutRanges
out = MLPutRanges()

Microsoft Visual Basic 宏中将 Excel 命名范围导出到 MATLAB Microsoft 无输出

调用函数以发送命名范围中的数据 当前工作表到 MATLAB。

MLPutRanges

Microsoft Visual Basic 宏中将 Excel 命名范围导出到 MATLAB Microsoft 带输出

调用函数以发送命名范围中的数据 当前工作表到 MATLAB。

out = MLPutRanges()

out如果函数成功,则返回 0 或带有相应错误代码的字符串(如果函数失败)

7. ​MLGetMatrix

1
2
3
= MLGetMatrix(var_name,edat)  %将 MATLAB 矩阵的内容写入 Excel 工作表中,从左上角由 指定的单元格开始
MLGetMatrix var_name, edat %将 MATLAB 矩阵的内容写入 Excel 工作表中,从左上角由 指定的单元格开始
out = MLGetMatrix(var_name,edat) %允许您在 VBA 宏中执行函数时查找错误。如果函数失败, 然后是一个包含错误代码的字符串。否则,为

7.1 直接使用位置将矩阵内容写入工作表

在 MATLAB 中访问矩阵的内容并将内容写入工作表。指定名称 矩阵和目标单元格显式。

在 MATLAB 中定义一个 4×3 矩阵。

1
A = [1,2,3;4,5,6;7,8,9;10,11,12]
1
2
3
4
5
6
A =

1 2 3
4 5 6
7 8 9
10 11 12

打开 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
2
3
4
5
6
A =

1 2 3
4 5 6
7 8 9
10 11 12

打开 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
2
3
4
5
6
A =

1 2 3
4 5 6
7 8 9
10 11 12

在 Excel 中的“开发工具” 选项卡上,单击“​代码​”组中的“​Visual Basic”。将打开“Visual Basic 编辑器”窗口。

从“插入”菜单中,选择 模块”以插入新模块。在模块1中 窗口中,输入此VBA代码,其中包含一个名为.

1
2
3
4
Sub GetMatrix()
MLGetMatrix "A","B2"
MatlabRequest
End Sub

MatlabRequest初始化内部电子表格链接™变量并使其正常工作 在子例程中

1
2
3
= MLEvalString(command) %指定 用于在 MATLAB 工作区中求值的 MATLAB 命令。 在工作表单元格中工作时使用此语法
MLEvalString command
err = MLEvalString(command) %返回 执行时的执行状态 一个 VBA 宏

在工作表单元格中创建对角矩阵

在单元格中输入变量。 在从 到 的单元格范围内输入数字 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
2
3
4
5
6
7
8
Sub Diagonal()

MLPutMatrix "a", Range("B1:F1")
MLEvalString "b = diag(a);"
MLGetMatrix "b", "A3"
MatlabRequest

End Sub

通过单击 “运行子/用户窗体”来运行宏 (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Diagonal()

Dim err As Variant

MLPutMatrix "a", Range("B1:F1")
err = MLEvalString("b = diag(2a);") 'Invalid code

If err <> 0 Then
MsgBox err
End If

MLGetMatrix "b", "A3"
MatlabRequest

End Sub

通过单击“运行​子/用户窗体”来运行宏 VBA 工具栏。有关运行宏的详细信息,请参阅 Excel 帮助。

此电子表格链接™错误显示:。要显示 MATLAB 错误,请参阅 MLShowMatlabErrors​。\#COMMAND!

8. ​MLGetFigure

1
2
3
= MLGetFigure(width, height) %将当前 MATLAB 图形导入到 Excel 工作表中,将图形的左上角放在当前 工作表单元格。在 Excel 中指定图形的规范化宽度和高度
MLGetFigure width, height %将当前 MATLAB 图形导入 Excel 工作表,将图形的左上角放在当前 工作表单元格。在 VBA 宏中使用此语法
out = MLGetFigure(width,height) %允许您在 VBA 宏中执行时查找错误。 如果失败,则为字符串 包含错误代码。否则,为

将当前 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
2
z = peaks(25);
surf(z)

https://ww2.mathworks.cn/help/releases/R2023a/exlink/mlgetfigure_surf.png

在 Excel 中的“开发工具” 选项卡上,单击“​代码​”组中的“​Visual Basic”。将打开“Visual Basic 编辑器”窗口。

选择​ “插入>模块​”以插入新模块。在“模块1”窗口中,输入此VBA 包含名为 的宏的代码。MyFigure

1
2
3
4
Sub MyFigure()
MLGetFigure 0.8, 0.8
MatlabRequest
End Sub

宏使用该函数导入当前图形 到工作表中。 初始化内部 电子表格链接™变量并启用到 子例程中的函数。

选择图形位置的单元格。运行 通过单击宏 运行子/用户窗体 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
2
3
4
= MLAutoStart(flag) %自动设置 启动电子表格链接™和 MATLAB 软件。状态更改将在下次启动 Excel 会话时生效。直接在 工作表
MLAutoStart flag %设置自动启动 电子表格链接和 MATLAB 软件。状态更改将在下次启动 Excel 会话时生效
out = MLAutoStart(flag)
%允许您在 VBA 宏中执行时捕获错误。 如果失败,则为字符串 包含错误代码

取消电子表格链接和 MATLAB 的自动启动

在工作表中输入以下命令:

MLAutoStart("no")

电子表格链接和 MATLAB 不会在后续的 Excel 会话中启动 调用。

10. 输入参数

flag— 自动启动指定“是”(默认) |“不”

要么 ."yes""no"

指定每次自动启动电子表格链接和 MATLAB 软件"yes"​Microsoft Excel®会话开始。指定取消 电子表格链接和 MATLAB 软件的自动启动。"no"

11. 输出参数

out— 成功指示器0 | 字符串标量

0如果命令成功。否则,字符串 包含错误代码。