我想用js宏一键给wps文字排版,其中包括插入页码和内外侧页码之间的转换,用录制宏的办法插入内侧或外侧页码都不行,删除页眉页码也删除不了。用vb的时候挺好,能不能帮我看看代码哪有问题啊?
*/
function Macro1()
{
(obj=>{
obj.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 144, 144, ActiveDocument.Sections.Item(1).Footers.Item(wdHeaderFooterPrimary).Range);
(obj=>{
obj.Fill.Visible = msoFalse;
obj.Line.Visible = msoFalse;
(obj=>{
obj.AutoSize = 1;
obj.WordWrap = 0;
obj.MarginLeft = 0;
obj.MarginRight = 0;
obj.MarginTop = 0;
obj.MarginBottom = 0;
obj.Orientation = msoTextOrientationHorizontal;
})(obj.TextFrame);
obj.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin;
obj.Left = -999995;
obj.RelativeVerticalPosition = wdRelativeVerticalPositionParagraph;
obj.Top = 0;
obj.WrapFormat.Type = wdWrapNone;
(obj=>{
obj.Text = "X";
obj.Fields.Add(ActiveDocument.Sections.Item(1).Footers.Item(wdHeaderFooterPrimary).Shapes.Item(1).TextFrame.TextRange, wdFieldPage, "", true);
})(obj.TextFrame.TextRange);
})(obj.Shapes.Item(1));
})(ActiveDocument.Sections.Item(1).Footers.Item(wdHeaderFooterPrimary));
Selection.SetRange(3, 3);
(obj=>{
(obj=>{
obj.WrapFormat.Type = wdWrapNone;
obj.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin;
obj.Left = -999995;
obj.RelativeVerticalPosition = wdRelativeVerticalPositionParagraph;
obj.Top = 0;
(obj=>{
obj.MarginLeft = 0;
obj.MarginRight = 0;
obj.MarginTop = 0;
obj.MarginBottom = 0;
obj.Orientation = msoTextOrientationHorizontal;
(obj=>{
obj.MoveEnd(wdCharacter, -1);
obj.Delete(wdCharacter, 1);
obj.Text = "X";
obj.Fields.Add(ActiveDocument.Sections.Item(1).Footers.Item(wdHeaderFooterPrimary).Range.ShapeRange.Shapes.Item("TextBox 1").TextFrame.TextRange, wdFieldPage, "", true);
})(obj.TextRange);
})(obj.TextFrame);
})(obj.Range.ShapeRange.Shapes.Item("TextBox 1"));
(obj=>{
obj.NumberStyle = wdPageNumberStyleNumberInDash;
obj.RestartNumberingAtSection = false;
obj.StartingNumber = 1;
obj.IncludeChapterNumber = false;
})(obj.PageNumbers);
})(ActiveDocument.Sections.Item(1).Footers.Item(
这是我录制宏的一部分,下面是截图
补充一下:因为同一个文件在单双面打印的时候需要在插入内测页码和外侧页码之间转换,但在有页码的情况下再插入页码会出现混乱,我的思路是在插入页码之前加入删除页眉页脚的代码,以便顺利转换。但目前,采用宏录制的方法,不管是插入页码还是删除页眉页脚都实现不了。下面是我用vb代码实现插入和删除功能的代码,如何转换成js代码?
Sub 插入居中页码()
'
'插入居中页码
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
Set rng = .Range
rng.Font.Size = 14
rng.Font.Name = "宋体"
rng.Collapse wdCollapseStart
rng.Collapse wdCollapseEnd
ActiveDocument.Fields.Add rng, wdFieldEmpty, "Page"
Set rng = .Range
rng.Collapse wdCollapseEnd
.Range.Fields.Update
.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
With Selection.Sections(1).Headers(1).PageNumbers
.NumberStyle = wdPageNumberStyleNumberInDash
.HeadingLevelForChapter = 0
.IncludeChapterNumber = False
.ChapterPageSeparator = wdSeparatorHyphen
.RestartNumberingAtSection = False
.StartingNumber = 0
End With
End Sub
Sub 删除页眉页脚()
'
'删除页眉页脚
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
With Selection.HeaderFooter.Range
.WholeStory
.Delete Unit:=wdCharacter, Count:=1
End With
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
With Selection.HeaderFooter.Range
.WholeStory
.Delete Unit:=wdCharacter, Count:=1
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 0
Selection.SetRange Start:=3, End:=3
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Selection.SetRange Start:=0, End:=0
ActiveWindow.ActivePane.VerticalPercentScrolled = 24
End Sub