目前还不是太明白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
有用!InsertBreak是方法,wdSectionBreakContinuous是传递给这个方法的参数,”.”是用来访问对象成员的
我再试试,谢谢指点
经检测确实起作用,但是修改了参数及参数的值,功能一直没有变化。以下两个参数对应的功能是不同的,但是按照下述写法执行之后功能却是一样的,最终都只能得到分页符(下一页)
ox.Application.Selection.InsertBreak.wdSectionBreakContinuous := 3 ;对应连续分节符
ox.Application.Selection.InsertBreak.wdPageBreak := 7 ;对应分节符(下一页)
但是如果分开写,通过更改参数和参数对应的数字就可以实现不同的功能。
下图是InsertBreak的参数
word.Application.Selection.InsertBreak.WdBreakType := 3
应该这么写
https://docs.microsoft.com/zh-cn/office/vba/api/word.selection.insertbreak#syntax
我也不太懂,也是测出来的。我的理解是WdBreakType是数据类型,3和wdSectionBreakContinuous是一个东西,类似中文名跟英文名的概念
word.Application.Selection.InsertBreak.WdBreakType := 3
应该这么写
https://docs.microsoft.com/zh-cn/office/vba/api/word.selection.insertbreak#syntax
好,谢谢,我看看这个链接
!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
用OnOff := !OnOff开关,节省快捷键。另外不太建议用空格,用的时候容易触发空格
666,赞
!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 :=””的作用是什么?没有好像也能起作用
;设置首行不缩进
Space & d::
ox.Application.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 0
ox.Application.Selection.ParagraphFormat.FirstLineIndent := 0
设置首行不缩进
多加一行
好