myjping 发表于 2012-2-17 09:28:55

怎么样用lisp操作word生也文字的下标?

谁能说说怎么样用lisp操作word生也文字的下标,我对word了解不多
下面的生成word文本的方法

(defun c:tt()
   (vl-load-com)
   (if (null MW-accept)(jinn-get-word-Lib))
   (jinn-get-word-object)
   (MW-put-bold range 1)
   (MW-insertafter range "翔虹AutoCAD 技术中心")
   (MW-put-bold range 0)
   ;(MW-put-Font.Subscript range 1)
   (MW-insertafter range "\nVisual LISP ActiveX太神奇了!")
   (setq filename "c:\\LSPTOOLS\\testdwg\\wordtest1.doc")
   (vlax-invoke-method docobj "Saveas" filename nil nil nil nil nil nil)
)
(defun jinn-get-word-Lib ()
(setq office:dir "C:\\Program Files (x86)\\Microsoft Office\\")
(cond
    ((setq mwlib (findfile (strcat office:dir "office\\" "MSWORD8.olb"))))
    ((setq mwlib (findfile (strcat office:dir "office\\" "MSWORD9.olb"))))
    ((setq mwlib (findfile (strcat office:dir "office\\" "MSWORD.olb"))))
    ((setq mwlib (findfile (strcat office:dir "office11\\" "MSWORD.olb"))))
    ((setq mwlib (findfile (strcat office:dir "office12\\" "MSWORD.olb"))))
    ((setq mwlib (findfile (strcat office:dir "office14\\" "MSWORD.olb"))))   
    (t (setq mwlib nil))
)
(if mwlib
    (vlax-import-type-library
      :tlb-filename      mwlib
:methods-prefix"MW-"
:properties-prefix"MW-"
:constants-prefix"MW-"
    )
    (alert "Word typelib 文件不存在")
)
)

(defun jinn-get-word-object()
   (setq WORDobj (vlax-create-object "WORD.Application"))
   (vla-put-visible WORDobj 1)
   (setq docs(vlax-get-property WORDobj 'documents))
   (setq docobj(vlax-invoke-method docs 'Add))
   (setq pgobj(MW-get-paragraphs docobj))
   (setq lastpgobj (MW-get-last pgobj))
   (setq range (MW-get-range lastpgobj))
)

snddd2000 发表于 2012-2-17 10:34:06

本帖最后由 snddd2000 于 2012-2-17 10:39 编辑

(setq msw (vlax-get-object "Word.Application"))
(if (equal nil msw)
   (progn
   ; Word is not running. Start it.
   (setq msw (vlax-create-object "Word.Application"))
   (vla-put-visible msw :vlax-true)
   )
)

(setq docs (vla-get-documents msw))
(setq doc (vlax-invoke-method docs 'Add))

(setq range (vlax-invoke-method doc 'Range))
(setq font (vlax-get-property range 'font))
(vlax-put-property range 'Start 0)
(vlax-put-property range 'End 1)
(vlax-put-property range 'Text "A")
(vlax-put-property font 'Subscript 0)

(setq range (vlax-invoke-method doc 'Range))
(setq font (vlax-get-property range 'font))
(vlax-put-property range 'Start 2)
(vlax-put-property range 'End 3)
(vlax-put-property range 'Text "1")
(vlax-put-property font 'Subscript 1)

Gu_xl 发表于 2012-2-17 10:28:06

(vlax-put-property (vlax-get-property Range 'font) 'subscript:vlax-true)

myjping 发表于 2012-2-17 13:22:07

谢谢,我试试,到我给划帐,

yjr111 发表于 2012-2-17 16:09:55

越来越讲究了哈,都在用WORD了

zdqwy19 发表于 2012-2-18 20:02:21

我也不清楚,不过我可以提供一个思路,你先在word中录制宏,然后研究这个宏,慢慢可以找到答案,我以前就是这样做的。

lqplvhehe321 发表于 2018-5-18 18:13:06

下载学习一下
页: [1]
查看完整版本: 怎么样用lisp操作word生也文字的下标?