|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 食昆食屯 于 2024-11-7 17:42 编辑
我的需求:将一个文件内所有的.doc文件,都变成.docx(不用判断,文件夹里的文件都是.doc格式,就是数量比较多1000+)
限制:不能用vba(电脑里没有office),不能用其他专业编程语言如Python,电脑不能联网,现在电脑里就要一个2022版的wps,所有文件编辑都是用wps,环境特殊请见谅。
我的水平JS宏是一点会不,vba可以看懂ai的代码,可以改。
我用 AI生成的了好几版,也用了好几种AI(KIMI、讯飞星火、豆包、通义千问)修正几次后都差不多了,最后的版本如下:
- function ConvertFilesToDocx() {
- var folderPath = "C:\\Users\\suihe\\Desktop\\转存测试"; // 指定文件夹路径
- // 使用WPS Office的内置方法获取文件列表
- var files = getFilesInFolder(folderPath);
- for (var i = 0; i < files.length; i++) {
- var filePath = files[i];
- var ext = getFileExtension(filePath).toLowerCase();
- if (ext == "doc" || ext == "rtf" || ext == "txt") { // 可以根据需要添加更多文件类型
- try {
- var doc = Application.Documents.Open(filePath);
- var newFilePath = getNewFilePath(filePath, ".docx");
- doc.SaveAs(newFilePath, 12); // 12 表示 .docx 格式
- doc.Close(false);
- WScript.Echo("已成功转换文件: " + filePath);
- } catch (e) {
- WScript.Echo("转换文件失败: " + filePath + ", 错误信息: " + e.message);
- }
- }
- }
- }
- // 辅助函数:获取文件夹中的所有文件
- function getFilesInFolder(folderPath) {
- var files = [];
- var shell = Application.CreateObject("Shell.Application");//这里总是错误!!!!!
- var folder = shell.NameSpace(folderPath);
- var items = folder.Items();
- for (var i = 0; i < items.Count; i++) {
- var item = items.Item(i);
- var filePath = folderPath + "\" + item.Name;
- files.push(filePath);
- }
- return files;
- }
- // 辅助函数:获取文件扩展名
- function getFileExtension(filePath) {
- var lastDotIndex = filePath.lastIndexOf(".");
- if (lastDotIndex === -1) return "";
- return filePath.substring(lastDotIndex + 1);
- }
- // 辅助函数:生成新的文件路径
- function getNewFilePath(oldFilePath, newExt) {
- var lastDotIndex = oldFilePath.lastIndexOf(".");
- if (lastDotIndex === -1) return oldFilePath + newExt;
- return oldFilePath.substring(0, lastDotIndex) + newExt;
- }
复制代码 主要卡主的位置已经标记,让ai修正就是CreateObject、ActiveXObject、FSObject三个反复变动,但是代码就是过不去,显示错误如下:
求大神指导,代码到底要怎么写,如果有其他解决方案批量修改文件格式也行,求大神指导!
|
|