ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: tangqingfu

[求助] 如何通过代码将词汇表批量生成单词(中文、英文、音标)测试?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-20 12:27 来自手机 | 显示全部楼层
413191246se 发表于 2021-1-20 11:43
唐兄:第 30 行代码“NumColumns:=4”把 4 改为 3 即可;但同时,43行代码“j=4.7”要改为更大值才行,至于 ...

好的,谢谢!

TA的精华主题

TA的得分主题

发表于 2021-1-20 13:47 | 显示全部楼层
唐兄:这是最新代码,你不必改了,我全改了。建议:中文先设定为宋体/英文:Times New Roman 较好。
怕你等不及审核,先上代码压缩包,下载后自行拷贝即可。
tangqingfu-new-code.rar (1.31 KB, 下载次数: 22)

TA的精华主题

TA的得分主题

发表于 2021-1-20 13:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub aaaa提取单词音标中文()
  2.     Dim r As Range, p&, t As Table, i As Paragraph, n&, k&, j!, myRange As Range, m&, h$
  3.     h = InputBox("", "请输入分栏数:", "3")
  4.     If h = "" Then End
  5.     With Selection
  6.         If .Type = wdSelectionIP Then .WholeStory
  7.         Set r = .Range
  8.         .EndKey 6
  9.         With .Paragraphs(1).Range
  10.             Do While .Paragraphs(1).Range.Text = vbCr
  11.                 .Delete
  12.             Loop
  13.         End With
  14.         .EndKey 6
  15.         .TypeParagraph
  16.         p = r.Paragraphs.Count
  17.         .InsertAfter Text:=r
  18.         If .Next.Text = vbCr Then .Next.Delete
  19.         If .Characters.Last.Text = vbCr Then .Characters.Last.Delete
  20.         .ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=3, AutoFitBehavior:=wdAutoFitFixed
  21.         .Tables(1).Style = "网格型"
  22.     End With
  23.     With Selection
  24.         For k = 1 To 3
  25.         Set t = ActiveDocument.Tables(1)
  26.         t.Columns(k).Select
  27.         With Selection
  28.             .Copy
  29.             .EndKey 6
  30.             .InsertBreak
  31.             .Paste
  32.         End With
  33.         ActiveDocument.Tables(2).Select
  34.         With Selection
  35.             .Rows.ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=False
  36.             For Each i In .Paragraphs
  37.                 n = n + 1
  38.                 i.Range.InsertBefore Text:=n & "."
  39.             Next
  40.         End With
  41.         With Selection
  42.             .ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=h, AutoFitBehavior:=wdAutoFitFixed
  43.             .Rows.ConvertToText Separator:=wdSeparateByTabs, NestedTables:=True
  44.             For Each i In .Paragraphs
  45.                 i.Range.Characters.Last.InsertBefore Text:=vbTab
  46.             Next
  47.             Do While .Text Like "*" & vbTab & vbTab & "?"
  48.                 .Characters.Last.Previous.Delete
  49.             Loop
  50.             With .Range.Find
  51.                 .Replacement.Font.Underline = wdUnderlineSingle
  52.                 .Execute "^9", , , 0, , , , , 1, "", 2
  53.                 .Execute "^9", , , 0, , , , , , "^& ", 2
  54.             End With
  55.         End With
  56.         Set myRange = Selection.Range
  57.         With ActiveDocument.Sections(1).PageSetup
  58.             j = ((.PageWidth - .LeftMargin - .RightMargin) / 28.35 - 0.25) / h
  59.         End With
  60.         With myRange
  61.             For Each i In .Paragraphs
  62.                 i.Range.Select
  63.                 With Selection
  64.                     With .ParagraphFormat.TabStops
  65.                         .ClearAll
  66.                         For m = 1 To h
  67.                             .Add Position:=CentimetersToPoints(j * m), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
  68.                         Next m
  69.                     End With
  70.                     .ParagraphFormat.LeftIndent = CentimetersToPoints(0)
  71.                 End With
  72.             Next
  73.             With .Find
  74.                 .Font.Underline = wdUnderlineSingle
  75.                 .Replacement.Font.Underline = wdUnderlineNone
  76.                 .Execute " ", , , 0, , , , , 1, "", 2
  77.             End With
  78.         End With
  79.         Selection.EndKey 6
  80.         n = 0
  81.         Next k
  82.     End With
  83.     ActiveDocument.Tables(1).Delete
  84.     ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitFullPage
  85.     ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitBestFit
  86.     Selection.HomeKey Unit:=wdStory
  87.     MsgBox "Congratulations! Complete!", 0 + 48
  88. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-22 10:23 | 显示全部楼层

感谢413191246se兄的代码,代码更显示智能化,可以自行分栏。
在运行后会弹出提示:
对象变量或With块变量未设置

TA的精华主题

TA的得分主题

发表于 2021-1-22 13:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
唐兄:第 13 楼代码,在我的 Windows10-64bit + Office2019Word 中运行 OK!没毛病。请自行查找原因。
另外:请注意你的示例文档是否正确。比如:前面以单词开头,后面以”初中“结尾。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-22 16:17 | 显示全部楼层
413191246se 发表于 2021-1-22 13:38
唐兄:第 13 楼代码,在我的 Windows10-64bit + Office2019Word 中运行 OK!没毛病。请自行查找原因。
另 ...

按一楼的文档进行测试,都出现上述提示,三台电脑都会弹出提示,但不影响生成结果

TA的精华主题

TA的得分主题

发表于 2021-1-22 19:09 | 显示全部楼层
本帖最后由 413191246se 于 2021-1-22 19:11 编辑

唐兄:你提供的文档,在测试时,要将分页符及后面的文本删除后保存,然后再测试。
即:以“twelve”为首,以“初中”为尾,保存起来后运行。
*
* 唐兄:请将示例文档调整为:首词为“twelve”,尾词为“初中”,没有空白段落,然后试用下面的宏

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-22 21:39 | 显示全部楼层
413191246se 发表于 2021-1-22 19:09
唐兄:你提供的文档,在测试时,要将分页符及后面的文本删除后保存,然后再测试。
即:以“twelve”为首, ...

保存后运行果然可以,再次感谢413191246se兄!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 00:54 , Processed in 0.043126 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表