ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 工作需要,求助大神帮忙修改一下VBA代码,谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-13 15:40 | 显示全部楼层 |阅读模式
本帖最后由 烟火孤星泪 于 2019-3-14 15:08 编辑

Sub 生成效果表()
'Date:2019/3/7 二月初一 Thursday
'标签:word,excel数据导入word
'备注1:
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
Dim arr2(1 To 50 ^ 4, 1 To 2), rng As Range
arr = ActiveWorkbook.ActiveSheet.Range("A1").CurrentRegion
For i = 3 To UBound(arr)
If Len(arr(i, 1)) Then
k = k + 2
arr2(k, 1) = arr(i, 1)
End If
k = k + 1
arr2(k, 1) = arr(i, 2)
arr2(k, 2) = arr(i, 3)
Next
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("效果表").Delete
On Error GoTo 0
With ActiveWorkbook.Worksheets.Add
.Name = "效果表"
With .Range("A1").Resize(k, 2)
.Value = arr2
.EntireColumn.AutoFit
For Each rng In .Resize(k, 1).SpecialCells(xlCellTypeBlanks)
With rng.Offset(1).Resize(1, 2)
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Bold = True
.Font.ColorIndex = 3
.Font.Name = "等线"
.Font.Size = 16
End With
Next
End With
.Range("A1").EntireRow.Delete
.Range("A1").Resize(k - 1, 2).Copy
End With
With CreateObject("Word.Application")
Set Doc = .Documents.Add
Doc.Content.PasteExcelTable False, False, False
Doc.SaveAs2 ActiveWorkbook.Path & "\效果.docx"
Doc.Close True
.Quit
End With
Set Doc = Nothing
Application.DisplayAlerts = True
MsgBox "完成"
End Sub

附件.rar (25.42 KB, 下载次数: 8)

这代码,生成的内容,能否给B列加上换行,麻烦修改一下,谢谢。
1.png
2.png




TA的精华主题

TA的得分主题

发表于 2019-3-13 18:13 | 显示全部楼层
你如果提供附件,问题早解决了。

TA的精华主题

TA的得分主题

发表于 2019-3-13 20:37 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-14 15:08 | 显示全部楼层
wzsy2_mrf 发表于 2019-3-13 18:13
你如果提供附件,问题早解决了。

附件已上传,附件里一个是加载宏,一个是数据表格
麻烦帮忙看看,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-14 15:12 | 显示全部楼层
lsc900707 发表于 2019-3-13 20:37
你说的对,没有附件,只能看看。

附件已上传,附件里一个是加载宏,一个是数据表格
麻烦帮忙看看,谢谢!!

TA的精华主题

TA的得分主题

发表于 2019-3-14 19:14 | 显示全部楼层
  1. End With
  2. With CreateObject("Word.Application")
复制代码

之前加一行:
  1. [b:b].WrapText = True
复制代码

TA的精华主题

TA的得分主题

发表于 2019-3-14 21:42 | 显示全部楼层
  1. Sub 生成效果表()
  2. 'Date:2019/3/7 二月初一 Thursday
  3. '标签:word,excel数据导入word
  4. '备注1:
  5. Application.DisplayAlerts = False
  6. ActiveWorkbook.Save
  7. Application.DisplayAlerts = True
  8. Dim arr2(1 To 50 ^ 4, 1 To 2), rng As Range
  9. arr = ActiveWorkbook.ActiveSheet.Range("A1").CurrentRegion
  10. For i = 3 To UBound(arr)
  11.     If Len(arr(i, 1)) Then
  12.         k = k + 2
  13.         arr2(k, 1) = arr(i, 1)
  14.     End If
  15.     k = k + 1
  16.     arr2(k, 1) = arr(i, 2)
  17.     arr2(k, 2) = arr(i, 3)
  18. Next
  19. Application.DisplayAlerts = False
  20. On Error Resume Next
  21. ActiveWorkbook.Worksheets("效果表").Delete
  22. With ActiveWorkbook.Worksheets.Add
  23.     .Name = "效果表"
  24.     .[b:b].WrapText = True
  25.     With .Range("A1").Resize(k, 2)
  26.         .Value = arr2
  27.         .EntireColumn.AutoFit
  28.         For Each rng In .Resize(k, 1).SpecialCells(xlCellTypeBlanks)
  29.              With rng.Offset(1).Resize(1, 2)
  30.                 .Merge
  31.                 .HorizontalAlignment = xlCenter
  32.                 .VerticalAlignment = xlCenter
  33.                 .Font.Bold = True
  34.                 .Font.ColorIndex = 3
  35.                 .Font.Name = "等线"
  36.                 .Font.Size = 16
  37.              End With
  38.         Next
  39.     End With
  40.     .Range("A1").EntireRow.Delete
  41.     .Range("A1").Resize(k - 1, 2).Copy
  42. End With
  43. With CreateObject("Word.Application")
  44.     Set Doc = .Documents.Add
  45.     Doc.Content.PasteExcelTable False, False, False
  46.     Doc.SaveAs2 ActiveWorkbook.Path & "\效果.docx"
  47.     Doc.Close True
  48.     .Quit
  49. End With
  50. Set Doc = Nothing
  51. Application.DisplayAlerts = True
  52. MsgBox "完成"
  53. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-3-14 21:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  将  On Error GoTo 0
    With ActiveWorkbook.Worksheets.Add
        .Name = "效果表"
        With .Range("A1").Resize(k, 2)
改成:
    On Error GoTo 0
    With ActiveWorkbook.Worksheets.Add
        .[b:b].WrapText = True
        .Name = "效果表"
        With .Range("A1").Resize(k, 2)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-15 09:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

这个代码可以换行,但是换行后,好像整个表格的行高和列高都改变了,麻烦帮忙看看,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-15 09:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

不用了,已经解决了,谢谢各位
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-6 01:55 , Processed in 0.039213 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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