合并多个word文档

matlab:合并多个word文档

背景:

编辑一个具有多个内容结构一致的平行章节,可以分别处理每个章节,然后将这些章节合并起来。思路是循环地将文档二、三复制粘贴到文档一后面。

情形一:合并的章节之间需要插入分页符

%% 合并文档,中间插入分页符
word = actxserver('Word.Application');
word.Visible = 0;
word.DisplayAlerts = 0;
[documentsToMerge, pathname] = uigetfile({'*.doc;*.docx;*.docm','Word Files (*.doc,*.docx,*.docm)';'*.*', 'All Files (*.*)'}, 'MultiSelect','on');
outputFileName = '合并后的文档.docx';

mergedDoc = word.Documents.Open(fullfile(pathname,documentsToMerge{1}));

% 合并剩余文档
for DocIndex = 2:length(documentsToMerge)
    currentDoc = word.Documents.Open(fullfile(pathname,documentsToMerge{DocIndex}));
    
    % 在当前文档末尾插入分页符
    mergedDoc.Range.End = mergedDoc.Range.End - 1;
    mergedDoc.Application.Selection.InsertBreak(7);
    
    % 将当前文档复制到合并文档
    currentDocRange = currentDoc.Content;
    currentDocRange.Copy;
    
    mergedDocRange = mergedDoc.Content;
    mergedDocRange.Collapse(0);
    mergedDocRange.Paste;
    
    currentDoc.Close;
end
mergedDoc.SaveAs2(fullfile(pathname,'已改\',outputFileName));
mergedDoc.Close ();

word.Quit ();
delete(word);

情形二:合并的章节之间不需要插入分页符

只需将上面代码中插入分页符的语句删除即可。同时单个章节的文档不要留空行,否则合并后每个章节之间都有一个回车,删除好麻烦的。

word = actxserver('Word.Application');
word.Visible = 0;
word.DisplayAlerts = 0;
[documentsToMerge, pathname] = uigetfile({'*.doc;*.docx;*.docm','Word Files (*.doc,*.docx,*.docm)';'*.*', 'All Files (*.*)'}, 'MultiSelect','on');
outputFileName = '合并后的文档.docx';

mergedDoc = word.Documents.Open(fullfile(pathname,documentsToMerge{1}));

% 合并
for DocIndex = 2:length(documentsToMerge)
    currentDoc = word.Documents.Open(fullfile(pathname,documentsToMerge{DocIndex}));
    
    % 将当前文档复制到合并文档
    currentDocRange = currentDoc.Content;
    currentDocRange.Copy;
    
    mergedDocRange = mergedDoc.Content;
    mergedDocRange.Collapse(0);
    mergedDocRange.Paste;
    
    % 关闭当前文档
    currentDoc.Close;
end

mergedDoc.SaveAs2(fullfile(pathname,'已改\',outputFileName));
mergedDoc.Close ();

word.Quit ();
delete(word);

需要注意的是,有时运行以上代码中途会报错,不知道是什么原因😭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值