ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何使用vba实现word选中区域内容快速转表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-9 19:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 Zhanghaijing87 于 2024-7-11 15:08 编辑

选中区域的内容,包括文本、图片(表格的情况很复杂不考虑了)快速转表格。
已由草莽老师帮忙解决。
万分感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 09:32 | 显示全部楼层
不知道我表达的是否清楚。
就是word中选中的内容专转为表格,标题(不管几级标题)为左边一列,他下面的内容是右边一列。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 14:17 | 显示全部楼层
Zhanghaijing87 发表于 2024-7-10 09:32
不知道我表达的是否清楚。
就是word中选中的内容专转为表格,标题(不管几级标题)为左边一列,他下面的内 ...

如果太复杂,可以暂时不考虑参数有表格(或者图片)的情况。先能顺利把文本的情况顺利运行。感谢老师们。

TA的精华主题

TA的得分主题

发表于 2024-7-11 19:05 | 显示全部楼层
  1. Sub 选定内容转表格_waifa()
  2. '代码仅供参考,无后续修改服务,不挤面条。有其他需求请自己修改或AI,否则就付费定制!
  3. Dim rg As Range, rgt As Range, ta As Table, ce As Cell, sha As InlineShape
  4.     Dim mydoc As Document, pa As Paragraph
  5.     Set mydoc = ActiveDocument
  6.     Set rg = Selection.Range
  7.     Set rgt = rg.Paragraphs.First.Range
  8.     rgt.InsertBefore vbNewLine
  9.     Set ta = rgt.Tables.Add(rgt.Paragraphs.First.Range, 1, 2)
  10.     ta.Columns(1).Width = rgt.Sections(1).PageSetup.TextColumns(1).Width / 3
  11.     ta.Columns(2).Width = rgt.Sections(1).PageSetup.TextColumns(1).Width * 2 / 3
  12.     ta.Style = "网格型"
  13.     ta.Range.Style = "正文"
  14.     ta.Range.Paragraphs.Last.Next.Range.InsertParagraphBefore
  15.     rg.Start = ta.Range.End
  16.     rg.Start = rg.Paragraphs(2).Range.Start
  17.     Set rgt1 = rg.Paragraphs(1).Range
  18.     Do
  19.         If rgt1.End > rg.End Then Exit Do
  20.         Set rgt1 = rgt1.Paragraphs.Last.Range
  21.         If rgt1.ParagraphFormat.OutlineLevel < 4 Then
  22.             If Len(ta.Cell(ta.Rows.Count, 2).Range.Text) > 2 Then ta.Rows.Add
  23.             ta.Cell(ta.Rows.Count, 1).Range.FormattedText = rgt1
  24.         Else
  25.             If rgt1.Information(12) Then
  26.                 Set rgt1 = rgt1.Tables(1).Range
  27.                 Set rgt = ActiveDocument.Range(ta.Cell(ta.Rows.Count, 2).Range.End - 1, ta.Cell(ta.Rows.Count, 2).Range.End - 1)
  28.                 rgt.FormattedText = rgt1
  29.                 rgt1.Start = ta.Range.Paragraphs.Last.Next.Range.Start
  30.             Else
  31.                 Set rgt = ActiveDocument.Range(ta.Cell(ta.Rows.Count, 2).Range.End - 1, ta.Cell(ta.Rows.Count, 2).Range.End - 1)
  32.                 rgt.FormattedText = rgt1
  33.             End If
  34.         End If
  35.     Loop While rgt1.MoveEnd(4)
  36.     With ta.Range.ParagraphFormat
  37.         .Alignment = wdAlignParagraphLeft
  38.         .CharacterUnitFirstLineIndent = 0
  39.         .FirstLineIndent = 0
  40.         .LeftIndent = 0
  41.     End With
  42.     rg.Delete
  43.     MsgBox "OK"
  44. End Sub
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 13:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-7-14 11:30 | 显示全部楼层
没啥好的思路,只能蚂蚁搬家,就不续尾了

TA的精华主题

TA的得分主题

发表于 2024-7-16 16:53 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-17 14:11 | 显示全部楼层
1478525 发表于 2024-7-16 16:53
怎么解决的,可以发一下么

可以问下论坛的蜀中草莽。老师。是他的代码

TA的精华主题

TA的得分主题

发表于 2024-7-20 20:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Zhanghaijing87 发表于 2024-7-17 14:11
可以问下论坛的蜀中草莽。老师。是他的代码

好的 谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 15:39 , Processed in 0.037165 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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