ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何一次性"提取表头"和删除"列项"??在线等

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-3-1 15:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用守柔在2005-3-1 10:54:00的发言:

其实,我有些感慨!

做程序,比如这个,设计完成两个表格,乃至2000甚至于上万,程序是一样的,不同的只是循环数量而矣,那么,如何让程序圆满达到用户想要的目的呢?答案只有一个,让用户将所有的要求和效果全部正确地表达出来,或者,用户的附件要有代表性,要有一定的规律性。

我一直很遗憾的是,楼主从急到缓(2-16~2-28),一下子跨越了很多天,并且,到现在,还有一些问题,未考虑清楚,这对于编程人员来说,是很不感冒的。编了没用,用了不说,出了问题,没图,等等,其实是有些忌讳的。好在楼主现在还在,我们可以继续探讨。

比如楼主刚才所说的:“

柔版主在10楼的附件可以运行,正如你所想的,我的这些表格中:比如

挂靠比例分布 是不需要这么处理的,还有

均值 频数 标准差 这样的表

程序能够自动检测不处理吗?”,

当然能够做到,问题是,你应该这样说,在该文档中,只有某一个样式的表格是需要处理的,而其它是不需要处理的,这样我就明白了,而你的“比如,还有”,说不定还有其它类型,程序在判断时,编程人员都没有搞清楚,电脑能清楚吗?

当然,我只是就编程而言,说明一些问题,其实这是一个极其简单的代码,只是繁一些但不难矣,请楼主等会儿,我想,下午肯定会结束的。

看了这些,我才知道该说什么了。其实我的表要做各种表真是累,思路也乱。要是象楼主与版主那样耐心沟通,互相了解整个过程。这样楼主最后达到了满意、称心的作品了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-2 08:43 | 显示全部楼层

呵呵,关键还是班竹们有这个意愿,他们的耐心和智慧,都是堪称一流的!

去过那么多的论坛,只有这里我最喜欢!!

TA的精华主题

TA的得分主题

发表于 2005-3-2 09:50 | 显示全部楼层
以下是引用hpw在2005-3-2 8:43:00的发言:

呵呵,关键还是班竹们有这个意愿,他们的耐心和智慧,都是堪称一流的!

去过那么多的论坛,只有这里我最喜欢!!

同感!

TA的精华主题

TA的得分主题

发表于 2005-3-2 11:39 | 显示全部楼层
TO 楼主,您的要求太过复杂,需要时间,认真调试。另外,就表格的规律性,就不敢肯定,所以,想同你进行在线对话,请查看一下我的资料,(MSN),下午有时间,我想完成它。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-2 11:43 | 显示全部楼层

呵呵,比较弱智,找了半天才找到你的资料,我已经加你了

TA的精华主题

TA的得分主题

发表于 2005-3-2 11:54 | 显示全部楼层
坚决抗议!为什么要到MSN,这儿有许多学生需要守柔老师。[em16]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-2 13:52 | 显示全部楼层

我想柔班竹主要是想讨论一下想要表达的东西,通过MSN会快一些了解意图,因为确实很复杂的,也是为了方便能够尽快使之完美出台!

不过获悉柔班竹家中有事,真是替他很难过!

TA的精华主题

TA的得分主题

发表于 2005-3-2 14:16 | 显示全部楼层
哦,可天下没有太平的事,总要经历过。祝守柔班竹身体健康,好运连连!

TA的精华主题

TA的得分主题

发表于 2005-3-5 15:05 | 显示全部楼层

这个东东太繁了,今天整整花了我三个小时,基本搞定,估计还会有不少问题,可楼主却潇洒去也。代码在附件中,此附件已经程序处理。

衷心希望我们的网友的WORD水平越来越好,这样的东东,再也不要出现了,几乎都找不能规律,靠错误处理来判断,滋味很不好受!

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-3-5 15:01:09 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '显式变量声明 Sub TabChanges() Dim TabString As String, TabString1 As String, TabString2 As String Dim aTab As Table, i As Integer, RCount As Integer, CCount As Byte, Temp As Range Application.ScreenUpdating = False '关闭屏幕更新 On Error Resume Next '忽略错误 For Each aTab In ActiveDocument.Tables '在活动文档的表格中循环 With aTab '对每个aTab表格对象 With .Range .Font.Name = "宋体" '字体设置 .Font.Size = 10 '字号设置 '最小行距 .Paragraphs.LineSpacingRule = wdLineSpaceAtLeast .Paragraphs.LineSpacing = 20 '20磅 .Font.NameAscii = "Arial" '西文字体为"Arial" End With .AutoFitBehavior wdAutoFitWindow '根据窗口大小自动调整 CCount = .Columns.Count '取得表格列数 RCount = .Rows.Count '取得表格行数 '判断最后第二行是否包含system字符 If InStr(.Cell(RCount - 1, 2).Range.Text, "System") > 0 Then '设置一个单元格区域 Set Temp = ActiveDocument.Range(.Cell(RCount - 1, 1).Range.Start, .Cell(RCount, CCount - 1).Range.End) Temp.Select '选中 Selection.Rows.Delete '删除选中行 GoTo Again '先判断最后一行是否含有Valid N (listwise)字符 ElseIf InStr(.Cell(RCount, 1).Range.Text, "Valid N (listwise)") > 0 Then .Rows(RCount).Delete TabString1 = VBA.Replace(.Cell(2, 1).Range.Text, Chr(13), "") '插入指定字符(已去除段落标记) ActiveDocument.Range(.Range.Start - 1, .Range.Start - 1).InsertAfter TabString1 '如果有累积百分比字样则 ElseIf .Cell(1, 5).Range.Text Like "累积百分比*" Then '设置错误陷阱 If Err.Number = 5941 Then Err.Clear: GoTo GoReturn Again: .Cell(1, 1).Split 1, 2 '分列 For i = 1 To RCount '交叉替换单元格中的内容 .Cell(i, 6).Range.Text = VBA.Replace(.Cell(i, 5).Range.Text, Chr(13), "") .Cell(i, 5).Range.Text = VBA.Replace(.Cell(i, 3).Range.Text, Chr(13), "") .Cell(i, 4).Range.Text = VBA.Replace(.Cell(i, 2).Range.Text, Chr(13), "") Next '定义一个区域变量 Set Temp = ActiveDocument.Range(.Cell(1, 1).Range.Start, .Cell(RCount, 3).Range.End) Temp.Select Selection.Columns.Delete '删除选定列 With .Rows(1).Range.Shading '设置第一行底纹 .Texture = wdTextureNone .BackgroundPatternColor = wdColorGray15 End With GoTo SetCell Else GoReturn: Select Case CCount Case 10 '取得1,1单元格中的文本和4,1单元格中的文本 TabString1 = ActiveDocument.Range(.Cell(1, 1).Range.Start, .Cell(1, 1).Range.End - 1) TabString2 = ActiveDocument.Range(.Cell(4, 1).Range.Start, .Cell(4, 1).Range.End - 1) TabString = "附表:" & TabString2 & "(" & TabString1 & ")" TabString = VBA.Replace(TabString, Chr(13), "") '在表格之前的位置中插入 ActiveDocument.Range(.Range.Start - 1, .Range.Start - 1).InsertAfter TabString With .Cell(1, 1) '对1,1单元格 .Split 3, 1 '拆分为3行1列 '该单元格行删除并下方单元格上移 .Range.Cells.Delete ShiftCells:=wdDeleteCellsEntireRow End With .Cell(2, 8).Range.Text = "频数" .Cell(2, 9).Range.Text = "百分比" .Cell(1, 5).Merge merget=.Cell(1, 6) .Cell(1, 5).Range.Text = "总体" RCount = .Rows.Count '定义一个表格总行数 With .Cell(3, 1) '对3,1单元格 '拆分为总行数-最上方2行和最下方一行即得中间部分行数 .Split RCount - 3, 1 .Range.Delete '删除单元格内容 .Select '选定该单元格 End With For i = 3 To RCount - 1 '循环合并指定单元格 .Cell(i, 1).Merge merget=.Cell(i, 2) Next Selection.SelectColumn '选定该列(注意表格有行列合并,不能使用ROWS\COLUMNS属性) With .Rows(2).Range.Shading .Texture = wdTextureNone .BackgroundPatternColor = wdColorGray15 End With GoTo SetCell Case 4 TabString1 = ActiveDocument.Range(.Cell(1, 1).Range.Start, .Cell(1, 1).Range.End - 1) TabString = "附表:" & TabString1 TabString = VBA.Replace(TabString, Chr(13), "") ActiveDocument.Range(.Range.Start - 1, .Range.Start - 1).InsertAfter TabString With .Rows(1).Range.Shading .Texture = wdTextureNone .BackgroundPatternColor = wdColorGray15 End With GoTo SetCell Case 6 TabString1 = ActiveDocument.Range(.Cell(2, 1).Range.Start, .Cell(2, 1).Range.End - 1) TabString = "附表:" & TabString1 TabString = VBA.Replace(TabString, Chr(13), "") ActiveDocument.Range(.Range.Start - 1, .Range.Start - 1).InsertAfter TabString .Rows(3).Delete End Select End If SetCell: .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '段落居中 .Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter '垂直居中 .Borders.InsideLineStyle = wdLineStyleSingle '内部单线 .Borders.InsideLineWidth = wdLineWidth025pt '内部线宽 .Borders.OutsideLineStyle = wdLineStyleSingle '外部单线 .Borders.OutsideLineWidth = wdLineWidth150pt '外部线宽 .Range.Font.Color = wdColorAutomatic '字体 .Rows(1).Range.Font.Bold = True .Columns(1).Select Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft End With Next aTab Application.ScreenUpdating = True '恢复屏幕更新 Call SetFormat End Sub '---------------------- Sub SetFormat() Dim i As Paragraph Application.ScreenUpdating = False '关闭屏幕更新 For Each i In ActiveDocument.Paragraphs '在段落中循环 If InStr(i.Range, "附表") > 0 Then '如果有附表字符 With i.Range .Font.Name = "宋体" '设置字体格式 .Font.Size = 12 '设置字号 '设置为最小行距 .ParagraphFormat.LineSpacingRule = wdLineSpaceAtLeast .ParagraphFormat.LineSpacing = 22 '22磅 .ParagraphFormat.SpaceAfter = 12 '段前12磅 End With End If Application.ScreenUpdating = True Next End Sub '---------------------- oyHtFCVt.zip (224.51 KB, 下载次数: 22)

TA的精华主题

TA的得分主题

发表于 2005-3-5 15:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
辛苦了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 10:18 , Processed in 0.041699 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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