ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何自动删除表格中有的多个回车符?成为一行。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-10-22 11:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

使用效果很不错,谢谢!

TA的精华主题

TA的得分主题

发表于 2004-10-22 12:50 | 显示全部楼层

几个情况说明:

一:WORD中的表格,类似于你这样的情况,应该这样进行,将头(花名册、年月日)尾(填表人)置于页眉页脚中,将表格的首行重复标题行(表格/重复标题行),这样,一个表格就可以解决问题。(无论几页,自动产生重复表头,操作方法,选定需要重复的表头,再表格/重复标题行)

二:此文档进入EXCEL,以你这样的设计,意义不大,应该使用固定表头,每个新单项为一列,尽量不要合并单元格。当需要打印时,可以设置打印标题行(页面设置中),固定的表头可以窗口/冻结窗口,便于查阅。适当使用页眉页脚,使之相同的内容或者重复的内容进入页眉页脚中(如花名册,年月日),页脚中写入填表人:***。

三:不同类型表格,置于不同的工作表中。

四:关于自动写入EXCEL中的代码,首先,可以不用复制粘贴的方法,但你是否保证你所传的附件中的WORD文档,每个表格中的相同部分所占的单元格行数相同,另外在表格中没有合并单元格?如果是这样,可以将WORD中的数据直接写入EXCEL中,但我想进行空白的EXCEL工作表中,你以后再进行EXCEL表头的设置。

先说到这里,你看看吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-22 13:59 | 显示全部楼层

我本人对excel 的基本操作也是比较好的,对word的基本操作也可以,但是那个word的表格不是出自一个人的手,水平也不可能象版主那么高。但表格形式的完全一样的。我又思考了一个。我其实只需要把文本自动转换成相关表格就可以了。然后再在excel中慢慢调整好了。

TA的精华主题

TA的得分主题

发表于 2004-10-22 14:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你的文本在哪里,附件中好象未曾见到。如果要转换,可以使用表格/文本转换为表格即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-22 14:33 | 显示全部楼层
文本就是word中的表头,如果自动完成转换表格而且与下面的表格粘成一个表格就好了。这样到了excel中就不用调整了。谢谢!

TA的精华主题

TA的得分主题

发表于 2004-10-22 15:29 | 显示全部楼层

这样,你先在上传的附件中运行此宏,看一下效果如何:

Sub TEST() Dim i As Integer, W1 As Double, W2 As Double, W3 As Double, W4 As Double On Error Resume Next Application.ScreenUpdating = False For i = 1 To 18 w = Me.Tables(1).Cell(3, i).Width If i <= 4 Then W1 = W1 + w ElseIf i <= 8 Then W2 = W2 + w ElseIf i <= 12 Then W3 = W3 + w ElseIf i <= 18 Then W4 = W4 + w End If Next With ActiveDocument .Paragraphs(2).Range.ConvertToTable Separator:=wdSeparateByTabs With .Tables(1) .Style = "Íø¸ñÐÍ" .Cell(1, 1).Width = W1 .Cell(1, 2).Width = W2 .Cell(1, 3).Width = W3 .Cell(1, 4).Width = W4 End With .Paragraphs(1).Range.ConvertToTable .Tables(1).Cell(1, 1).Width = W1 + W2 + W3 + W4 End With Application.ScreenUpdating = True End Sub

TA的精华主题

TA的得分主题

发表于 2004-10-22 15:51 | 显示全部楼层

修改了一下,改为以下代码:

Sub TEST() Dim i As Integer, W1 As Double, W2 As Double, W3 As Double, W4 As Double Dim MyRange As Range On Error Resume Next Application.ScreenUpdating = False With ActiveDocument Tb = .Tables(1).Columns.Width For i = 1 To 18 w = .Tables(1).Cell(3, i).Width If i <= 4 Then W1 = W1 + w ElseIf i <= 8 Then W2 = W2 + w ElseIf i <= 12 Then W3 = W3 + w ElseIf i <= 18 Then W4 = W4 + w End If Next Set MyRange = .Range(.Paragraphs(1).Range.Start, .Paragraphs(2).Range.End) MyRange.ConvertToTable Separator:=wdSeparateByTabs With .Tables(1) .Style = "Íø¸ñÐÍ" For i = 1 To 2 .Cell(i, 1).Width = W1 .Cell(i, 2).Width = W2 .Cell(i, 3).Width = W3 .Cell(i, 4).Width = W4 Next .Cell(Row:=1, Column:=1).Merge _ MergeT=.Cell(Row:=1, Column:=4) .Rows.Alignment = wdAlignRowCenter End With End With Application.ScreenUpdating = True End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-22 17:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

当运行到时

.Style ="í???Dí"时,出现如下提示:

编译错误,数据方法或成员未找到。

第一个代码也行不通。我对word的vba可是一窍不通。对excel的vba 还有一点了解。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-22 21:08 | 显示全部楼层

我在实际操作当中发现,用了版主的宏之后,多行的问题解决了,但是列又有对不齐的现象,我仔细观察发现原来在某些方面word的表格当中,本身的列的线有些就没有对齐,有些看上去对起了,但一粘贴到excel当中又对不齐了.有没有办法让word 中表格的列完全自动对齐呢?谢谢!

TA的精华主题

TA的得分主题

发表于 2004-10-23 07:26 | 显示全部楼层
以下是引用xxs1025在2004-10-22 21:08:00的发言:

我在实际操作当中发现,用了版主的宏之后,多行的问题解决了,但是列又有对不齐的现象,我仔细观察发现原来在某些方面word的表格当中,本身的列的线有些就没有对齐,有些看上去对起了,但一粘贴到excel当中又对不齐了.有没有办法让word 中表格的列完全自动对齐呢?谢谢!

'都是粘贴惹的祸,有时一不小心就让中文代码成了乱码,让楼主操心了.

Sub TEST()

Dim i As Integer, W1 As Double, W2 As Double, W3 As Double, W4 As Double

Dim w As Double, MyRange As Range

On Error Resume Next

Application.ScreenUpdating = False

With ActiveDocument

Tb = .Tables(1).Columns.Width

For i = 1 To 18

w = .Tables(1).Cell(3, i).Width

If i <= 4 Then

W1 = W1 + w

ElseIf i <= 8 Then

W2 = W2 + w

ElseIf i <= 12 Then

W3 = W3 + w

ElseIf i <= 18 Then

W4 = W4 + w

End If

Next

Set MyRange = .Range(.Paragraphs(1).Range.Start, .Paragraphs(2).Range.End)

MyRange.ConvertToTable Separator:=wdSeparateByTabs

With .Tables(1)

.Style = "网格型"

For i = 1 To 2

.Cell(i, 1).Width = W1

.Cell(i, 2).Width = W2

.Cell(i, 3).Width = W3

.Cell(i, 4).Width = W4

Next

.Cell(Row:=1, Column:=1).Merge _

MergeT=.Cell(Row:=1, Column:=4)

.Rows.Alignment = wdAlignRowCenter

End With

End With

Application.ScreenUpdating = True

End Sub

为了减少此事的再次发生,我编了一个小代码,与大家共享:

Sub GetCopy() Dim i As Integer, Avs As Object, strSub As String Set Avs = Application.VBE.SelectedVBComponent i = Avs.CodeModule.CountOfLines With Selection .Collapse Direction:=wdCollapseEnd For n = 1 To i strSub = Avs.CodeModule.Lines(n, 1) .InsertAfter strSub & Chr(13) Next .Cut End With End Sub

此法原理是将当前代码窗口中的代码逐行插入到当前文档中,最后剪切,然后回到论坛上粘贴.(此代码应置于NORMAL模板中,运行时点VBE中的工具/宏:如图所示:

[此贴子已经被作者于2004-10-23 8:23:17编辑过]

如何自动删除表格中有的多个回车符?成为一行。

如何自动删除表格中有的多个回车符?成为一行。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 16:19 , Processed in 0.052329 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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