一、VBA怎麽读取word的页码
亲,代码如下:
Private Sub TJYS_Click()
Dim d, p As Integer
Dim f, ff As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ff = fso.getfolder(ThisDocument.Path)
d = 0: p = 0
For Each f In ff.Files
If f.Name ThisDocument.Name And Left(f.Name, 2) "~$" And f.Name Like "*.doc*" Then
d = d + 1
Documents.Open FileName:=ThisDocument.Path & "\" & f.Name
p = p + ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
ActiveDocument.Close False
End If
Next f
MsgBox "总共统计了 " & d &; " 个文件,总页数为 " & p &; "页。", vbOKOnly, "结果"
End Sub
二、word vba 怎么获取当前光标所在页码,并获取该页有多少行
Sub Macro2()
Dim r, p, r0, p0, rr, pp
p= Selection.Information(wdActiveEndPageNumber) '当前页码
r= Selection.Information(wdFirstCharacterLineNumber) '当前行
'数行数
p0 = p
rr = r
Do
Selection.MoveDown Unit:=wdLine, Count:=1
pp = Selection.Information(wdActiveEndPageNumber)
r0 = Selection.Information(wdFirstCharacterLineNumber)
If pp > p Then
'退回原处
Selection.MoveUp Unit:=wdLine, Count:=(rr - r + 1)
Exit Do
End If
If rr = r0 Then
'退回原处
Selection.MoveUp Unit:=wdLine, Count:=(rr - r)
Exit Do
End If
rr = r0
Loop
MsgBox "当前页码:" & p & vbCrLf &; "本页总行数:" & rr
End Sub 申请加悬赏分!!!
三、如何用vba按页数拆分word文档
如果想按照指定页数拆分,请使用下面的代码,其它步骤和原来那个方案相同。
Option Explicit
Sub SplitEveryFivePagesAsDocuments()
Dim oSrcDoc As Document, oNewDoc As Document
Dim strSrcName As String, strNewName As String
Dim oRange As Range
Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer
Dim fso As Object
Const nSteps = 100 ' 修改这里控制每隔几页分割一次
Set fso = CreateObject("Scripting.FileSystemObject")
Set oSrcDoc = ActiveDocument
Set oRange = oSrcDoc.Content
nTotalPages = ActiveDocument.Content.Information(wdNumberOfPagesInDocument)
oRange.Collapse wdCollapseStart
oRange.Select
For nIndex = 1 To nTotalPages Step nSteps
Set oNewDoc = Documents.Add
If nIndex + nSteps > nTotalPages Then
nBound = nTotalPages
Else
nBound = nIndex + nSteps - 1
End If
For nSubIndex = nIndex To nBound
oSrcDoc.Activate
oSrcDoc.Bookmarks("\page").Range.Copy
oSrcDoc.Windows(1).Activate
Application.Browser.Target = wdBrowsePage
Application.Browser.Next
oNewDoc.Activate
oNewDoc.Windows(1).Selection.Paste
Next nSubIndex
strSrcName = oSrcDoc.FullName
strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
fso.GetBaseName(strSrcName) & "_" & (nIndex \ nSteps + 1) & "." & fso.GetExtensionName(strSrcName))
oNewDoc.SaveAs strNewName
oNewDoc.Close False
Next nIndex
Set oNewDoc = Nothing
Set oRange = Nothing
Set oSrcDoc = Nothing
Set fso = Nothing
MsgBox "结束!"
End Sub
四、word vba文档如何按照 文档页数 分割成多个文档
使用分节符下一页,取消节间链接,就可以了:
1、分别在在第二页(摘要)、绪论的第一个字符前插入分节符下一页,双击页眉(页脚)进入编辑状态,分别取消这两页,页眉和页脚工具--设计--导航--链接到前一条页眉,按钮的选中状态;
2、在摘要页插入页码,设置页码格式:编号格式为罗马数字,起始页为i;在绪论页插入页码,设置页码格式:编号格式为阿拉伯数字,起始页为1;
3、检查封面,如果有页码,直接删除。
希望能够帮到你,请采纳我的回答哦。
五、如何用VBA获取当前页页码
'以下代码可以确定所选中的单元格所在页的页码Sub test() For i = 1 To ActiveSheet.HPageBreaks.Count If Sheet1.HPageBreaks(i).Location.Row > ActiveCell.Row Then Exit For Next For j = 1 To ActiveSheet.VPageBreaks.Count If ActiveSheet.VPageBreaks(j).Location.Column > ActiveCell.Column Then Exit For Next If ActiveSheet.PageSetup.Order = xlOverThenDown Then MsgBox "选中单元格在第" & (i - 1) * (ActiveSheet.VPageBreaks.Count + 1) + j & "页" Else MsgBox "选中单元格在第" & (j - 1) * (ActiveSheet.HPageBreaks.Count + 1) + i & "页" End IfEnd Sub。
六、求助VBA代码运行的问题,获取word文档页数
这是因为DIR函数在作怪(你遍历子文件夹时调用带参数的Dir(folder, vbDirectory))
说实话,VBA中的DIR用法我不太喜欢,个人偏好使用fso技术。
建议使用下面方法,遍历子文件夹:
Sub test002(folderspec)
Dim fs, f, f1, sf, fc
Dim mypath As String, fn As String
Dim i As Long, lmyRow As Long
On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set sf = f.SubFolders
Set fc = f.Files
For Each f1 In sf
fn = f1.Name
mypath = folderspec & fn & "\"
'这里进一步使用 mypath
Next
For Each f1 In fc
fn = f1.Name
Next
End Sub
七、用VBA在Word中指定页码做一个饼图
目前我想到的方案是利用Word里面的“索引”功能。
1、选中需要提取的文字,执行菜单命令“插入-引用-索引和目录”;
2、在“索引”选项页里面选择单击按钮“标记索引项”;
3、指定“选项”为“当前页”,根据需要可以指定提取之后显示的页码格式为加粗或者倾斜,单击“标记”;
4、此时标记索引项窗口并不会关闭,而且你还能在文档中找到并选中下一个需要提取的文字,重复步骤3;
5、如果没有其它需要提取的文字了,单击“关闭”;
6、在需要插入索引表的地方,执行菜单命令“插入-引用-索引和目录”,根据需要设置索引表的格式(比如分栏、对齐、缩进等风格),然后单击“确定”。
这样所有标记过索引的文字以及它们所在的页码就都提取出来了。
如果需要提取的文字有很多,那么或许也可以用VBA宏来自动标记索引(即相当于自动完成上面的1-5步骤)。但是前提是这些文字必须都有非常特定的格式,即可以保证当前文档中凡是具有这个格式的文本,都是需要提取索引的文本。
如果楼主感兴趣的话,可以补充提问或者和我联系,并请告知Word版本号。
_______________________
补充:
下列VBA代码可以自动为当前文档中的所有红色文字建立索引条目,并在当前光标位置处插入带文字条目以及对应页码的索引表:
Option Explicit
Sub AutoMarkIndexForAllRedText()
Dim oSaveSelection As Range
Set oSaveSelection = Selection.Range
Selection.StartOf wdStory
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorRed ' 在这里可以设置更多的匹配格式,如字体、字号等
While Selection.Find.Execute(FindText:="", Forward:=True, Format:=True)
ActiveDocument.Indexes.MarkEntry(Selection.Range, Selection.Range.Text).Select
Selection.Collapse wdCollapseEnd
Wend
oSaveSelection.Select
ActiveDocument.Indexes.Add Selection.Range
MsgBox "完成!"
End Sub
如果楼主对于这个代码生成的索引表样式不太满意,也没关系。因为现在所有索引条目已经建好,所以只需把自动生成的索引表删除后用Word自己的“插入-引用-索引和目录”命令来重新生成符合自己要求样式的索引表即可。
八、求助:用word排班时,需正反面打印,页码该怎么设置
打开Word编辑框左上角的“视图(V)”,在下拉菜单中点鼠标左键选“页眉和页脚(H)”,于是所编辑文字瞬间披上了一层牛奶般的透明白膜,滚动鼠标轮将鼠标箭头移到文本首页的下方,落在有“页脚”字样的下方的长条框的左端顶部,输入数字“1”,然后点击编辑框顶部的“居中”符号,“1”一下子就跳到首页的下部中间位置了。
向下浏览就会发现第2页第3页上在同样的位置都注了对应的页码。 页码设好后,打开“文件—打印”,在“打印”对话框下选“页码范围”,并在后边的空白框中填入“1,3,5,7,11,13,15,17,19,21,23”,然后点“确定”,打印开始。
这时打印出的文稿是打印在未打印时静止地放在纸盒中的纸的正面,将前述打了一面的纸按1,3,5的奇数顺序分别反置并将页头对着打印机放在纸盒中。 然后在“打印”对话框中输入“2,4,6,8,10。
。
。
。”点确定。
这样打印出来的文稿就是按12345…的顺序排列的了。 在页码较多的情况下,逐一输入奇数码或偶数码较为费时,在“打印”对话框左下角有“打印(R)”选项,其中默认填写内容为“范围中所有页面”,你点击右侧的“V”形展开其他项,可以发现“”“奇数页”“偶数页”。
如此,你在页码范围选择“全部”的情况下,直接选择打印奇数页,然后再按由小到大的奇数顺序逐页反置放入纸盒,操作打印偶数页,一样可以实现正反面顺序打印。
木木Z_Z