您的位置:程序门 -> 其他开发语言 -> office开发/ vba



如何把活动文档第一段内容赋给字符串变量


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何把活动文档第一段内容赋给字符串变量[无满意答案结贴,结贴人:yzhcg25]
发表于:2007-10-18 16:55:23 楼主

        如题!
          想把活动文档的第一段的内容赋给一个字符串变量,因为要打开关闭好几个文档,然后后面的文档要用到前面数个文档的第一段,所以想把每个文档的第一段内容赋给字符型数组,但是却成功不了,下面是我的代码:
              for   i=   1   to   3
                    str(i)=   activedocument.paragraphs(1).range.text
                      msgbox   "str("&   i   &")="   &   str(i)
                next
      信息提示str(i)为空,请问大家该怎么弄才好,谢谢各位大侠!
发表于:2007-10-18 20:24:511楼 得分:0
             
            自己顶一下!
      希望大家施以援手啊!感激不尽……
发表于:2007-10-19 08:31:072楼 得分:0
dim   str(5)   as   string
for   i   =   1   to   5
        for   j   =   1   to   i
                str(i)   =   str(i)   +   "*"
        next   j
        msgbox   str(1)   &   chr(10)
next   i
发表于:2007-10-19 08:41:113楼 得分:0
        对些楼上兄台的热情解答,我还是不太懂
        哦,对不起啊!忘了说一个重要的问题
        上面那个代码是一个循环里面的,所以那个document对象mydoc会每次开始会打开,循环末尾又会关闭,想在关闭之前把第一段的内容赋给这个字符串变量,在这个大循环完结之后,把前面这几个文档的第一段内容写进一个新文档里面。就是这样,有什么解决的好办法吗?
发表于:2007-10-19 08:54:424楼 得分:0
                部分代码:
              private   sub   newfile()
                                                      for   i   =0   to  
                                              set   mydoc=word.document
                                              set   mydoc=document.add
                                              ……
                                                  str(i)=   activedocument.paragraphs(1).range.text  
                      msgbox   "str("&   i   &")="   &   str(i)  
                                          mydoc.saveas   filename:=i
                                          mydoc.close
                next  
                   
                      end   sub
发表于:2007-10-20 08:50:225楼 得分:0
明白你的意思。
我只是针对“信息提示str(i)为空”做的提示。
你的实现方法很好啊,只是为啥不直接写到文档中,要放在数组中,为了性能吗?
发表于:2007-10-20 16:53:596楼 得分:0
你打开的是一个新建的文档还是一个已存在的文档
如果是新建一个文档,那第一行一定是一个空字符
串。如果是一个已存在的文档那就要看一看第一行
是否有数据。
要不然就是你忘了激活刚打开的文档如:
  document(?).activate

然后再用
  str(i)=   activedocument.paragraphs(1).range.text    
或者这样
              private   sub   newfile()
                                                      for   i   =0   to   这里少了结束值
                                              set   mydoc=word.document   '这句好像有点多余
                                              set   mydoc=document.add   '
                                              ……
                                                  str(i)=   mydoc.paragraphs(1).range.text   '修改这里
                      msgbox   "str("&   i   &")="   &   str(i)  
                                          mydoc.saveas   filename:=i
                                          mydoc.close
                next  
                   
                      end   sub
祝你好运
发表于:2007-10-21 19:01:417楼 得分:0
             
      首先非常感谢两位大侠的热心解答!
      我的思路是依次打开好几个模板,从数据库里面把数据替换到需要填入数据的地方,然后保存关闭。最后一个模板里面的内容要求前面好几个写好的文档里面的第一段,因为模板数目比较多,每次打开,替换,保存,关闭。这样每次都这一个活动文档,就不存在没激活的问题。我用的是循环,因为可能要生成的文件数目不定(可能比较多),所以想在前面每个文档关闭之前把第一段赋给一个数组变量,这样打开最后一个模板文档要写入的时候,就把整个数组里面的内容依次写入。但是不知道为什么字符串变量里面竟然是空。让人很无奈
      祈求各位赐教解惑啊!
                   
发表于:2007-10-22 10:02:488楼 得分:0
你这里面需要用到文档close事件和加载宏。
加载宏可以在word起动时便运行,直到你的
word关闭时它才随着word的关闭而退出。
在这你需要明白的问题是:
1:什么是全局变量
2:什么是事件
3:什么是加载宏
在这时里我无法写代码给你但可以给你指一条路
你要自己去看vba的帮助文档,才能明白上面的
三个问题。

第一种情况:
由代码来控制打开和关闭
首先你得把所有打开和关闭代码和处理代码写在加载宏里
由加载宏来打开和关闭文档,并把str()数组
声明在加载宏的模块里,这样才可以存储信息

第二种情况
  你的文档在打开后需要手工来修改和关闭
  这种情况比较复杂要用一事件和全局变量
  你需要在第每一个文档的close事件中加入代码
  并在代码中把文档的信息存储到加载宏的全局
  变量中
 
好了自己去慢慢的研究去吧,这样才能感受到解决
问题的自豪感
发表于:2007-10-22 17:38:229楼 得分:0

          多谢楼上兄台的指教!可能我的表达能力不太好,很多时候都没说清楚,请见谅!
            我是一个vba初学者,但是一直用的是vb6.0编译器,word里面的对象操作不太熟,但对程序结构理解尚可,以前有过一点c++编程基础,对全局变量和事件还算基本了解吧!对那个加载宏不太了解,只知道用宏可以实现的用程序都可以实现,本例中,我这些依次打开不同的模板(一个模板要保存和几个不同记录的文件),把对应的数据填入里面,保存,关闭,中间可能还有些别的功能要实现,这些全部都在代码中实现,中间不需要任何鼠标或键盘操作。我的sstr(i)是一个窗体级的字符串(在本窗体内应该也是全局变量了吧?),而这些过程又全部在本窗体中,这个应该是没问题的,中间的数据填入,格式设置,文件生成都没问题,就剩下这个跨文档操作有问题,再次,诚心求教!往各位不吝赐教!感激……
发表于:2007-10-23 08:29:2210楼 得分:0
是否能确定sstr数组确实存在内容而不是空?
既然用vb,根本不存在跨文档的问题啊。
发表于:2007-10-23 11:01:2411楼 得分:0
        楼上兄台真是一语中的!
        我用str(i)="",结果是false,证明里面还是有东西的!可是不知道为什么显示不出来,在文档中也协办不进去。您说得对,这个还不算跨文档,因为一直都是一个活动文档,只是把前面文档里面的部分内容储存在数组中,等到打开指定的文档才把数组内容往文档里面写。
        可是还是不清楚为什么会不成功,郁闷……
发表于:2007-12-09 10:54:0712楼 得分:0
假设你要引用的文档是mydoc.doc
mytext=documents("mydoc.doc").paragraphs(1).range.text


快速检索

最新资讯
热门点击