合并actxserver电池问题
28日视图(30天)
显示旧的评论
我有一个问题在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;
0评论
接受的答案
答案(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;