蒙古青年论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 427|回复: 9

office 系列软件的二次开发

[复制链接]
发表于 2006-7-28 10:47:02 | 显示全部楼层 |阅读模式
来这里的很多朋友都不是搞软件开发的。
但是很多朋友都会用word进行文字处理,用excel做数据处理。
有很多场合会遇到重复性的工作,如果你会一点点编程会使你的工作效率成倍的提高。

以后我会陆续的讲讲用 vba 在word,excel里的编程。

通常做这样程序的时候,实现按照重复性的工作,录制一个宏。
这样office会把你做的工作用代码写好了。
然后你在按照能够形成循环的要求进行修改,
添加一个循环代码 do .... loop ,加一个退出判断,适当的时候退出就行了。

如果是多个文件操作的话,也可以通过循环打开文件,处理,关闭文件,也能实现。

[ 本帖最后由 ganjike 于 2006-7-28 13:47 编辑 ]
 楼主| 发表于 2006-7-28 10:53:49 | 显示全部楼层

网页文字转换到word里

以前我爱人曾经遇到过一个问题,就是从网页中将文字拷贝到
word里然后进行排版,但是发现每一行后都有一个硬回车符,导致
排版很困难,要手工删除每一个回车符,但是每个段落后的回车符
却要保留。所以导致手工操作非常繁琐费时。但是如果你会写vbs程序
可能用10多分钟写个程序,几秒钟之内就能解决这个问题。
而且以后这种问题,就容易了。

Do
    Selection.HomeKey Unit:=wdStory                        '将光标移动到文件头
    Selection.Find.ClearFormatting                              ’从这行开始到 end with 是通过录制宏,进行查找
                                                                                   'word生成的代码,拷贝过来
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^l"                                                       '查找硬回车
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    If Selection.Find.Execute() = False Then Exit Do                             '没有找到退出
    Selection.MoveRight Unit:=wdCharacter, Count:=1                       '找到向下移动一个字符,移动到硬回车后面
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend    '选择硬回车后面的一个字符
    If Selection.Text <> " " And Selection.Text <> "^t" Then                           '如果这个字符为空格或tab键则表示
                                                                                                       '下一个行为段落开始,如果不是则为需要删除的
        Selection.MoveLeft Unit:=wdCharacter, Count:=2                                  '硬回车,再向前移动两个字符
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend  '选择硬回车
        Selection.Delete                                                                                               '删除他
    End If
Loop                                                                                                                '进行下一次查找。

[ 本帖最后由 ganjike 于 2006-7-28 13:48 编辑 ]
发表于 2006-7-28 20:46:58 | 显示全部楼层
好东西 支持
发表于 2006-7-29 01:08:50 | 显示全部楼层
原帖由 ganjike 于 2006-7-28 10:53 发表
以前我爱人曾经遇到过一个问题,就是从网页中将文字拷贝到
word里然后进行排版,但是发现每一行后都有一个硬回车符,导致
排版很困难,要手工删除每一个回车符,但是每个段落后的回车符
却要保留。所以导致手工 ...


学术文章的排版还是要用LaTex。

另外,关于word排版,侯sir(侯俊杰)有本书专门讨论这个的。可以看看。其实,microsoft在这方面做得已够不错了,如果你们用过一些开源软件,比如在Linux环境下应用很广泛的AbiWord,还有OpenOffice,会觉得很郁闷,它们bug太多了,而且易用性等比较差。

说到LaTex,不得不佩服Knuth,在写The Art of Computer Programming的时候,发现当时的排版软件效果都不太理想,就自己用Pascal写了一个,牛人就是牛人。
 楼主| 发表于 2006-7-30 00:45:46 | 显示全部楼层
呵呵,我只是考虑很多朋友不一定非常了解计算机。
这个帖子的目的就是,把一些重复性的工作,而且这个工作还需要一定人参与的.
软件不能完全实现的,通过一个小的二次开发,将重复而大量的工作,变成非常简单的事情.
 楼主| 发表于 2006-7-30 01:07:32 | 显示全部楼层

excel 中删除链接

假如你有个excel文档很长,其中有一项是超链接
老板要你把超链接删掉,或者把超链接复制出来。
这个工作需要一个一个做,如果文档很长,即费时间,有枯燥,且容易出错。
如果你写一个宏,大概两分钟就搞定。

'假设是excel中 c列是超链接,这个代码是从3行到2115行把 c列中的超链接复制到d列中。
'然后删除他的超链接。而且c列中内容不变。

    For i = 3 To 2115
        Range("C" & i).Select         
       Range("D" & i ) = Range("C" & i).Hyperlinks(1).Address               
       Selection.Hyperlinks.Delete
    Next
发表于 2006-7-30 19:27:24 | 显示全部楼层
原帖由 ganjike 于 2006-7-30 00:45 发表
呵呵,我只是考虑很多朋友不一定非常了解计算机。
这个帖子的目的就是,把一些重复性的工作,而且这个工作还需要一定人参与的.
软件不能完全实现的,通过一个小的二次开发,将重复而大量的工作,变成非常简单的事情.


很感谢分享经验。
我也没有否定您的这些工作的意思。相信若存在误解会很快得到澄清。
 楼主| 发表于 2006-7-31 09:24:21 | 显示全部楼层
原帖由 死机了怎么办 于 2006-7-30 19:27 发表
很感谢分享经验。
我也没有否定您的这些工作的意思。相信若存在误解会很快得到澄清。


咱们都是一个目的,都是为了给来这里的朋友一些帮助。不会产生误解的。

我也是因为接触过这类问题,所以才提出这个帖子。
如果来这里的朋友有类似的问题,可以提出来,这里的人会帮助解决的。
发表于 2006-7-31 10:09:50 | 显示全部楼层
原帖由 死机了怎么办 于 2006-7-29 01:08 发表


学术文章的排版还是要用LaTex。

另外,关于word排版,侯sir(侯俊杰)有本书专门讨论这个的。可以看看。其实,microsoft在这方面做得已够不错了,如果你们用过一些开源软件,比如在Linux环境下应用很广泛的 ...


为什么用 LaTex,好像在 windows 上装不了。帮忙详细介绍一下。
发表于 2006-9-28 23:09:26 | 显示全部楼层
原帖由 雪花飞舞 于 2006-7-31 10:09 发表


为什么用 LaTex,好像在 windows 上装不了。帮忙详细介绍一下。


在windows上也有可以使用的LaTex软件。

LaTex是一种专业的学术类排版软件,其排版效果远远超过方正的系统,但是LaTex与早期的方正系统类似,姑且称之为一种标记性的语言(可能不准确),非专业人士要想掌握有一定的困难。但熟练的使用后,完全可以实现蒙古文的排版,而且输出的是与方正兼容的PS文件。

蒙古国国立大学的一位学者曾经在LaTex的基础上,编制了Mntex,即专门用来处理蒙古文的LaTex。

在网上这类的软件可以找到――它们都是免费的!

关键问题是:它们仅仅解决了蒙古文字的排版印刷,而没有解决所谓“信息化”的问题!

――来晚了,最近很忙,几乎2个月没有上网了――:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|蒙古青年论坛

GMT+8, 2026-7-16 10:45 , Processed in 0.010739 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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