AHK利用ComObjActive操作word

目前还不是太明白ComObjActive的具体用法,不过通过一些示例和自己的尝试,总算能写点自己能用的功能。如有错误,请指正。
在此感谢各位大佬和群友平时的帮助。
疑问:

    wdSectionBreakContinuous := 3
    ox.Application.Selection.InsertBreak(wdSectionBreakContinuous)
为何不能写成ox.Application.Selection.InsertBreak.wdSectionBreakContinuous := 3

可正常使用的代码分享:

;qww-word中 {{{2
#IfWinActive ahk_class OpusApp ahk_exe WINWORD.EXE
{
  F2::  ;添加连续分页符
    ox := ComObjActive("Word.Application")
    wdSectionBreakContinuous := 3
    ox.Application.Selection.InsertBreak(wdSectionBreakContinuous)
  Return
	Space & a::   ;导航窗格
    ox := ComObjActive("Word.Application")
    ox.Application.ActiveWindow.DocumentMap := True
  Return 
  Space & d::   ;设置首行不缩进
  	ox := ComObjActive("Word.Application")
    ox.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 0.1		
  Return
  Space & e::		  ;表格字体居中
    ox := ComObjActive("Word.Application")
    wdAlignParagraphCenter :=1
    wdCellAlignVerticalCenter :=1
    ox.Application.Selection.Cells.VerticalAlignment := wdCellAlignVerticalCenter
    ox.Application.Selection.ParagraphFormat.Alignment:= wdAlignParagraphCenter
    ox.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 0.1
  Return
	Space & f::   	          	  ;字体添加黄背景颜色
    ox := ComObjActive("Word.Application")
    wdred := 7
    ox.Application.Selection.Range.HighlightColorIndex := wdred
  Return
	Space & g::   	          	  ;字体添加绿背景颜色
    ox := ComObjActive("Word.Application")
    wdred := 4
    ox.Application.Selection.Range.HighlightColorIndex := wdred
  Return
	Space & o::	  	;合并单元格
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Cells.Merge
  Return
	Space & p::	  	;拆分单元格
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Cells.SplitNumRows:=1,NumColumns:=2,MergeBeforeSplit:=True
  Return
	Space & q::	  	;选中整个表格
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Tables(1).Select
  Return
	Space & s::	;设置行首缩进2字符—缩进拼音
  	ox := ComObjActive("Word.Application")
    ox.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 2
	Return
	Space & u::             		  ;取消字体背景颜色
    ox := ComObjActive("Word.Application")
    wdNoHighlight := 0
    ox.Application.Selection.Range.HighlightColorIndex := wdNoHighlight
  Return
	Space & w::	  	;根据窗口自动调整表格
    ox := ComObjActive("Word.Application")
    wdAutoFitWindow := 2
    ox.Application.Selection.Tables(1).AutoFitBehavior(wdAutoFitWindow)
  Return
	Space & z::				            ;页面背景调整为浅绿色
    ox := ComObjActive("Word.Application")
    ox.Application.ActiveDocument.Background.Fill.Solid
	Return
  Space & 9::		    ;删除表格列
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Columns.Delete
  Return
  Space & 0::		    ;删除表格行
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Rows.Delete
  Return
  Space & -::   ;删除表格
    ox := ComObjActive("Word.Application")
    ox.Application.Selection.Tables(1).Select
    ox.Application.Selection.Tables(1).Delete
  Return
	Space & \::                   ;word整页视图
    ox := ComObjActive("Word.Application")
    wdPageFitFullPage := 1
    ox.Application.ActiveWindow.ActivePane.View.Zoom.PageFit := wdPageFitFullPage
  Return

 

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他案例

鼠标键盘录像机(傻瓜版)

2021-12-8 8:37:35

其他案例

AHKv1带滚动条的窗口示例

2021-12-10 21:35:59

15 条回复 A文章作者 M管理员
  1. Tebayaki

    有用!InsertBreak是方法,wdSectionBreakContinuous是传递给这个方法的参数,”.”是用来访问对象成员的

    • 致良知·明

      经检测确实起作用,但是修改了参数及参数的值,功能一直没有变化。以下两个参数对应的功能是不同的,但是按照下述写法执行之后功能却是一样的,最终都只能得到分页符(下一页)
      ox.Application.Selection.InsertBreak.wdSectionBreakContinuous := 3 ;对应连续分节符
      ox.Application.Selection.InsertBreak.wdPageBreak := 7 ;对应分节符(下一页)

      但是如果分开写,通过更改参数和参数对应的数字就可以实现不同的功能。
      下图是InsertBreak的参数

  2. maxs

    我也不太懂,也是测出来的。我的理解是WdBreakType是数据类型,3和wdSectionBreakContinuous是一个东西,类似中文名跟英文名的概念

  3. maxs

    !w::
    word := ComObjActive(“Word.Application”)
    if OnOff := !OnOff
    {
    word.Application.Selection.ParagraphFormat.reset
    }
    else
    {
    word.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent :=2
    }
    word :=””
    return

    缩进2个字符,用.reset替代0.1

    • maxs

      用OnOff := !OnOff开关,节省快捷键。另外不太建议用空格,用的时候容易触发空格

  4. maxs

    !w::
    word := ComObjActive(“Word.Application”)
    if OnOff := !OnOff
    {
    word.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent :=0
    }
    else
    {
    word.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent :=2
    }
    word.Application.Selection.ParagraphFormat.FirstLineIndent := 0
    word :=””
    return

    reset貌似不对

    • 致良知·明

      我试了下,reset有时候可以起作用,有时候不起作用。
      我再试试新的,谢谢

    • 致良知·明

      word :=””的作用是什么?没有好像也能起作用

  5. 僵尸牌木乃伊

    ;设置首行不缩进
    Space & d::
    ox.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 0
    ox.Application.Selection.ParagraphFormat.FirstLineIndent := 0

    设置首行不缩进
    多加一行

个人中心
购物车
优惠劵
有新私信 私信列表
搜索