AI生成的教案还在手动复制粘贴?用好这个Word占位符技巧,一键搞定!
- 2026-11-08 00:55:05
AI生成的教案还在手动复制粘贴?用好这个Word占位符技巧,一键搞定!






附录1(vba代码): 附录2(提示词):







Option Explicit' 主程序:运行这个Sub Main_FillJsonToWord()Dim jsonPath As StringDim jsonContent As StringDim matchCollection As ObjectDim match As ObjectDim keyStr As String, valueStr As StringDim regex As Object' 1. 选择 JSON 文件With Application.FileDialog(msoFileDialogFilePicker).Title = "请选择 json 文件格式".Filters.Clear.Filters.Add "JSON Files", "*.json".AllowMultiSelect = FalseIf .Show = -1 ThenjsonPath = .SelectedItems(1)ElseExit SubEnd IfEnd With' 2. 读取文件内容 (处理 UTF-8 中文)jsonContent = ReadTextFileUTF8(jsonPath)If jsonContent = "" ThenMsgBox "文件内容为空或读取失败!", vbExclamationExit SubEnd If' 3. 初始化正则表达式引擎Set regex = CreateObject("VBScript.RegExp")With regex.Global = True.IgnoreCase = True.MultiLine = True' 这个正则用于匹配 "Key": "Value" 结构,支持 value 中包含转义引号' 注意:这是针对你提供的扁平 JSON 结构的简化匹配.Pattern = """([^""]+)""\s*:\s*""((?:[^""\\]|\\.)*)"""End With' 4. 执行匹配If regex.test(jsonContent) ThenSet matchCollection = regex.Execute(jsonContent)Application.ScreenUpdating = False ' 关闭屏幕更新加快速度' 5. 遍历每一对 Key-Value 并替换For Each match In matchCollectionkeyStr = match.SubMatches(0) ' 获取键 (如:授课题目)valueStr = match.SubMatches(1) ' 获取值' 处理 JSON 转义字符 (如 \" 变 ")valueStr = Replace(valueStr, "\""", """")valueStr = Replace(valueStr, "\\", "\")' 执行 Word 替换,自动加上 {{ }}Call ReplaceTextInDoc("{{" & keyStr & "}}", valueStr)Next matchApplication.ScreenUpdating = TrueMsgBox "数据填充完成!共处理 " & matchCollection.Count & " 个数据项。", vbInformationElseMsgBox "未在文件中找到有效的 JSON 格式数据。", vbExclamationEnd If' 清理对象Set regex = NothingSet matchCollection = NothingEnd Sub' 辅助函数:突破 255 字符限制的查找替换Sub ReplaceTextInDoc(FindText As String, ReplaceText As String)Dim myRange As RangeSet myRange = ActiveDocument.Content' 重置查找参数With myRange.Find.ClearFormatting.Replacement.ClearFormatting.Text = FindText.Forward = True.Wrap = wdFindStop.Format = False.MatchCase = False.MatchWholeWord = False.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = FalseEnd With' 循环查找并替换(解决长文本问题)Do While myRange.Find.Execute' 将找到的 Range 文本直接替换为新文本' 这种方法不受 Find.Replacement.Text 的 255 字符限制myRange.Text = ReplaceText' 将 Range 折叠到末尾,继续查找下一个myRange.Collapse Direction:=wdCollapseEndLoopEnd Sub' 辅助函数:以 UTF-8 编码读取文本文件 (防止中文乱码)Function ReadTextFileUTF8(filePath As String) As StringDim objStream As ObjectSet objStream = CreateObject("ADODB.Stream")With objStream.Type = 2 ' adTypeText.Charset = "utf-8".Open.LoadFromFile filePathReadTextFileUTF8 = .ReadText.CloseEnd WithSet objStream = NothingEnd Function
请帮我写一份关于《XXX》的教案。请严格按照JSON格式输出,Key(键)对应 课题名称、教学目标、教学反思、教学内容1(不含符号,数字和中文中不要空格),Value(值)为你需要填充的具体内容。不要输出多余的解释性文字,直接输出JSON代码。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。