合并actxserver电池问题

28日视图(30天)
蓝色的
蓝色的 2023年5月5日15:49
评论道: 克里斯·拉皮埃尔 2023年5月5日18:00
我有一个问题在Excel中使用actxserver合并单元。下面的脚本我预计合并细胞B1: C1, D1: E1, F1: G1和H1: I1但Excel反而合并细胞B1: C1, E1: F1, j - 1: K1和Q1: R1。我不得到它。我怎么能得到预期的结果?
%创建一个Excel对象。
e = actxserver (“Excel.Application”);
%添加一个新工作簿。
eWorkbook = e.Workbooks.Add;
e。可见= 1;
%使第一张工作表活跃。
eSheets = e.ActiveWorkbook.Sheets;
eSheet1 = eSheets.get (“项目”1);
eSheet1.Activate
%合并一些细胞
eSheet1 = eSheet1.get (“范围”,“B1: C1”);
eSheet1。MergeCells = 1;
eSheet1 = eSheet1.get (“范围”,“D1: E1”);
eSheet1。MergeCells = 1;
eSheet1 = eSheet1.get (“范围”,外国游客1:G1的);
eSheet1。MergeCells = 1;
eSheet1 = eSheet1.get (“范围”,“H1: I1”);
eSheet1。MergeCells = 1;
%保存并关闭文件
SaveAs (eWorkbook [pwd,“\ test_merge.xlsx”]);
eWorkbook。保存= 1;
关闭(eWorkbook);
%退出Excel程序和删除服务器对象。
e.Quit;
e.delete;
清晰的e;

接受的答案

Fangjun江
Fangjun江 2023年5月5日15:59
编辑:Fangjun江 2023年5月5日16:04
D1的合并:E1的合并影响B1: C1吗?
试着倒序,F1: G1,然后D1: E1,然后B1: C1。
另外,变量” eSheet1”是书写过度。表然后是范围。肯定有问题。
3评论
蓝色的
蓝色的 2023年5月5日在十六14
这是正确的!谢谢你!

登录置评。

答案(1)

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2023年5月5日17:35
对我来说,似乎 get(范围) 使用的是相对而不是绝对引用。当你合并B1和C1, B1被视为A1和 (“范围”、“D1: E1”) 计算如果B1左上角。这是显而易见的如果你反向合并的顺序,这是我第一次尝试修复。
我很确定这是因为你覆盖 eSheet1 每次选择一个新的范围。
我将写这样的代码,我相信产生期望的结果。
%创建一个Excel对象。
e = actxserver (“Excel.Application”);
%添加一个新工作簿。
eWorkbook = e.Workbooks.Add;
e。可见= 1;
%使第一张工作表活跃。
eSheets = e.ActiveWorkbook.Sheets;
eSheet1 = eSheets.get (“项目”1);
eSheet1.Activate
%合并一些细胞
eSheet1.Range (“B1: C1”).Merge;
eSheet1.Range (“D1: E1”).Merge;
eSheet1.Range (外国游客1:G1的).Merge;
eSheet1.Range (“H1: I1”).Merge;
%保存并关闭文件
SaveAs (eWorkbook [pwd,“\ test_merge.xlsx”]);
eWorkbook。保存= 1;
关闭(eWorkbook);
%退出Excel程序和删除服务器对象。
e.Quit;
e.delete;
清晰的e;
2的评论
克里斯·拉皮埃尔
克里斯·拉皮埃尔 2023年5月5日18:00
没有刷新页面之前发布。
谢谢

登录置评。

类别

找到更多的在在MATLAB中使用COM对象帮助中心文件交换

s manbetx 845


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!