【ChatGPT的小妙招】结合Excel的vbs开发者工具达成对Excel文件的处理
使用ChatGPT处理Excel文件的原理
众所周知,ChatGPT不管是3.0还是3.5还是4.0都只支持语言对话,并不支持文件的上传,所以,所谓的让ChatGPT直接处理Excel表格是做不到的,但是有人也说了,明明有些Excel表格的处理可以通过简单的一句话来告知ChatGPT如何运作,但是开发者就是没有打开这项功能,也许是出于安全考虑吧。那么今天,我们就转变一个思路,通过Excel本身存在的开发工具来解决这一难题。开发工具原本是用来通过编写vbs代码来进行批处理Excel文件。那么我们今天的思路就是通过告知ChatGPT我们处理Excel文件的步骤,让他来帮我们写vbs代码,之后再把代码代入Excel的开发工具中的Visual Basic中使用,即可达成使用ChatGPT来处理Excel文件的目的。
例子(翻译整合)
某公司收到一份英文Excel工作簿文件,其中有十几个工作表,现在需要整合成一份中英文对照模式的Excel工作簿。
操作方法
1. 对整份Excel工作簿进行翻译
用过翻译软件的应该都有发现,目前主流的翻译软件,例如有道、Google翻译等
今天我们以Google翻译为例
-
- 首先进入链接: Goole 翻译.
点击 文档
- 首先进入链接: Goole 翻译.
-
- 上传 英文原文件
-
- 翻译,导出 得到 中文翻译文件
-
- 检查 中文翻译文件 内部是否有出入
2. 进入ChatGPT对话框,描述需求
-
- 首先打开ChatGPT对话框描写需求(因为ChatGPT产品层出不穷,这里不提供网站)
- 首先打开ChatGPT对话框描写需求(因为ChatGPT产品层出不穷,这里不提供网站)
输入并发送: “我用谷歌翻译了一个excel表格,请帮我编写一段vbs代码,我想把翻译件和我的原文件进行整合,做成原文在上译文在下的形式”
-
- 这时候ChatGPT就会根据诉求编写一段 vbs代码:
Sub MergeTranslations()
Dim original As Workbook
Dim translated As Workbook
Dim originalSheet As Worksheet
Dim translatedSheet As Worksheet
Dim originalRange As Range
Dim translatedRange As Range
Dim row As Long
Dim col As Long
Dim originalText As String
Dim translatedText As String
' 打开原文件和译文文件
Set original = Workbooks.Open("path_to_original_file")
Set translated = Workbooks.Open("path_to_translated_file")
For Each originalSheet In original.Worksheets
' 获取对应的译文工作表
Set translatedSheet = translated.Worksheets(originalSheet.Name)
' 遍历工作表中的所有单元格,合并原文和译文
For row = 1 To originalSheet.UsedRange.Rows.Count
For col = 1 To originalSheet.UsedRange.Columns.Count
Set originalRange = originalSheet.Cells(row, col)
Set translatedRange = translatedSheet.Cells(row, col)
' 获取原文和译文文本
originalText = originalRange.Text
translatedText = translatedRange.Text
' 合并原文和译文
originalRange.Value = originalText & Chr(10) & translatedText
' 调整单元格格式
originalRange.Rows.AutoFit
originalRange.VerticalAlignment = xlTop
' 清空译文单元格
translatedRange.Value = ""
Next col
Next row
Next originalSheet
' 保存并关闭文件
original.Save
original.Close
translated.Close
End Sub
-
- 为了防止在对两个工作簿工作表的匹配遍历出错,我再加入了一部分判断语句,如果在 英文源文件 中找不到与 中文翻译件 中匹配的工作表,则跳过该工作表。更改后的代码如下:
Sub MergeTranslations()
Dim original As Workbook
Dim translated As Workbook
Dim originalSheet As Worksheet
Dim translatedSheet As Worksheet
Dim originalRange As Range
Dim translatedRange As Range
Dim row As Long
Dim col As Long
Dim originalText As String
Dim translatedText As String
' 打开原文件和译文文件
Set original = Workbooks.Open("path_to_original_file")
Set translated = Workbooks.Open("path_to_translated_file")
For Each originalSheet In original.Worksheets
' 检查对应的译文工作表是否存在
On Error Resume Next
Set translatedSheet = translated.Worksheets(originalSheet.Name)
On Error GoTo 0
' 如果译文工作表不存在,则跳过该工作表
If translatedSheet Is Nothing Then
MsgBox "Translation sheet for " & originalSheet.Name & " was not found.", vbExclamation, "Error"
Else
' 遍历工作表中的所有单元格,合并原文和译文
For row = 1 To originalSheet.UsedRange.Rows.Count
For col = 1 To originalSheet.UsedRange.Columns.Count
Set originalRange = originalSheet.Cells(row, col)
Set translatedRange = translatedSheet.Cells(row, col)
' 获取原文和译文文本
originalText = originalRange.Text
translatedText = translatedRange.Text
' 合并原文和译文
originalRange.Value = originalText & Chr(10) & translatedText
' 调整单元格格式
originalRange.Rows.AutoFit
originalRange.VerticalAlignment = xlTop
' 清空译文单元格
translatedRange.Value = ""
Next col
Next row
End If
Next originalSheet
' 保存并关闭文件
original.Save
original.Close
translated.Close
End Sub
注意,上述"path_to_original_file"及"path_to_translated_file"均为相对路径,为了减少错误的发生,请直接放在同一个文件夹内,并更名为类似 1.xlsx和2.xlsx等 利于输入,不会出错 的名字。
3. 打开两个Excel表格
防止某些表格打开时有保护,缺失等问题,提前手动打开能很大程度上防止后续vbs代码运行的出错。
4. 打开Excel的开发工具
复制上述代码,随意选取一个Excel文件,找到命令栏中的开发工具
如果上述命令栏中没有开发工具,以此从文件 → 选项 → 自定义功能区 → 主选项卡 → 勾选 开发工具
5. 打开Visual Basic
在 开发工具 中打开 Visual Basic
6. 使用Visual Basic
打开Visual Basic后界面如下,在空白处单击鼠标右键,依次选择插入 → 模块
此时会生成一个新的代码编辑框,将之前的代码经过更改两个文件名后全部复制后黏贴到新的对话框里,点击如下图所示的运行按钮
程序就将自动运行,运行完成后,新的整合文件将体现在 英文源文件 上。
6. 结束
-
- 检查整合后文件是否 翻译 有错误 , 调整例如 行间距 等简单问题
-
- 选择并保存未自动关闭的文件
至此,利用ChatGPT对Excel文件进行处理的全过程结束。
总结
ChatGPT的功能远远不止对话这么简单,有时候不能直接上传文件进行处理的时候,可以通过某些间接的方式进行处理从而达到目的,Excel可以这样,那说明PPT,CAD等其他同样可以使用各种语言代码编译处理任务的软件同样也能用类似方法达到目的,这里只是提供一种具体的使用思路,大家可以集思广益,大胆尝试。