学习使用word vba扩展trados的功能

在已安装trados的机器中office word 里会出现操作trados的工具条。这个是因为trados安装后会有一个trados自带的模版文件trados7.dot(我用的trados版本7)拷贝到:/Documents and Settings/Administrator/Application Data/Microsoft/Word/STARTUP中这样word在启动时就会自动的加载该模版。
 
那么,加载trados模版之后的word就会出现操作trados的工具条。我们可以用word打开trados模板文件,并可以再编辑的状态下查看该模版的vba的源代码。前提是word没有加载该模版(再'工具->模版和加载项'中去掉加载的模版)。
 
vba得源码使用vb for word写的。其中有些模块对应按钮的打开过程,比如:tw4winOpen对应的是trados工具条的打开按钮。
 
对代码研究发现,各个实现工具条按钮的类模块其实都是调用了tw4winMain中的方法。而trados实现的原理实际是利用了windows的剪切版。
 
下面我具一个打开过程的例子,说明一下原理:
 
      再word中点击打开按钮,会将光标所在位置处的文档转换成原文译文对照的格式。他的原理是。将光标所在位置添加一个标记(-{}-)然后再将光标所在段 落选中。并且在该段落的段首和段尾添加两个word的标签tw4winForm、tw4winUpto这样将整个一段复制下来并且通过tradosAPI 的函数执行打开命令。trados没有公开API所以只能仿照着他vba源码来使用
    参见 tw4winMain中的fExecute函数。
 
    trados执行后会从剪切板中将复制的内容取走!根据标记(-{}-)将整个段落替换掉在放入剪切板中。word再将剪切板中的内容取出替换原来的段落就可以了!
 
    那么文档打开后光标会停在译文的开头并且译文会独自成一个段落。这样就可以取到译文。然后移动光标向上移动两段。这样可以移动到源文处。原文也是独立成一段。这样可以取到译文和源文。
 
    修改译文后我们可以利用开始按钮设置的标签移动到段的开头。然后再向下移动4段。移动到译文段。将修改后的译文取出。
 
     这样我们就可以取出译文、原文、修改后的译文了!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VB访问word书签。 '实现代码如下 Dim cn As New ADODB.Connection Dim AdoRs As New ADODB.Recordset Dim WordTemps As New Word.Application Private Sub Form_Load() If cn.State = 1 Then cn.Close End If cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" End Sub '开始导出数据 Private Sub Command1_Click() Dim strSQl As String Dim REC As Integer Dim i As Integer WordTemps.Documents.Add App.Path + "\货物合同.doc", False WordTemps.Selection.GoTo wdGoToBookmark, , , "合同标题" WordTemps.Selection.TypeText "关于冬季货物的成交合同" WordTemps.Selection.GoTo wdGoToBookmark, , , "合同编号" WordTemps.Selection.TypeText "2004000001" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约单位" WordTemps.Selection.TypeText "宏大科技公司,天天科技公司" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约地址" WordTemps.Selection.TypeText "北京关村大厦" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约时间" WordTemps.Selection.TypeText fromat(Now, "yyyy-mm-dd") strSQl = "select * from Matrixs" AdoRs.Open strSQl, cn, adOpenKeyset, adLockOptimistic REC = AdoRs.RecordCount If REC < 1 Then MsgBox "无商品记录!", vbOKOnly, "提示" AdoRs.Close Exit Sub Else AdoRs.MoveFirst WordTemps.Selection.GoTo wdGoToBookmark, , , "货物清单" For i = 1 To REC WordTemps.Selection.TypeText AdoRs!名称 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!数量 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!规格 AdoRs.MoveNext If AdoRs.EOF = False Then WordTemps.Selection.InsertRowsBelow 1 '表格换行 End If Next i AdoRs.Close WordTemps.Visible = True '显示WORD窗口 End If End Sub '实现代码如下 Dim cn As New ADODB.Connection Dim AdoRs As New ADODB.Recordset Dim WordTemps As New Word.Application Private Sub Form_Load() If cn.State = 1 Then cn.Close End If cn.CursorLocation = adUseClient cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" End Sub '开始导出数据 Private Sub Command1_Click() Dim strSQl As String Dim REC As Integer Dim i As Integer WordTemps.Documents.Add App.Path + "\货物合同.doc", False WordTemps.Selection.GoTo wdGoToBookmark, , , "合同标题" WordTemps.Selection.TypeText "关于冬季货物的成交合同" WordTemps.Selection.GoTo wdGoToBookmark, , , "合同编号" WordTemps.Selection.TypeText "2004000001" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约单位" WordTemps.Selection.TypeText "宏大科技公司,天天科技公司" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约地址" WordTemps.Selection.TypeText "北京关村大厦" WordTemps.Selection.GoTo wdGoToBookmark, , , "签约时间" WordTemps.Selection.TypeText fromat(Now, "yyyy-mm-dd") strSQl = "select * from Matrixs" AdoRs.Open strSQl, cn, adOpenKeyset, adLockOptimistic REC = AdoRs.RecordCount If REC < 1 Then MsgBox "无商品记录!", vbOKOnly, "提示" AdoRs.Close Exit Sub Else AdoRs.MoveFirst WordTemps.Selection.GoTo wdGoToBookmark, , , "货物清单" For i = 1 To REC WordTemps.Selection.TypeText AdoRs!名称 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!数量 WordTemps.Selection.MoveRight unit:=wdCharacter, Count:=1 '右移一格 WordTemps.Selection.TypeText AdoRs!规格 AdoRs.MoveNext If AdoRs.EOF = False Then WordTemps.Selection.InsertRowsBelow 1 '表格换行 End If Next i AdoRs.Close WordTemps.Visible = True '显示WORD窗口 End If End Sub end

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值