Note: The other languages of the website are Google-translated. Back to English

如何計算Excel中Pdf文件的頁數?

現在,如果特定文件夾中有多個Pdf文件,則要在工作表中顯示所有這些文件名,並獲取每個文件的頁碼。 您如何快速,輕鬆地在Excel中處理這項工作?

使用VBA代碼計算工作表中文件夾中的Pdf文件的頁碼


使用VBA代碼計算工作表中文件夾中的Pdf文件的頁碼

以下VBA代碼可能可以幫助您在工作表中顯示所有Pdf文件名及其每個頁碼,請按以下步驟操作:

1。 打開一個工作表,您要在其中獲取Pdf文件和頁碼。

2。 按住 ALT + F11 鍵,然後打開 Microsoft Visual Basic for Applications 窗口。

3。 點擊 插入 > 模塊,然後將以下宏粘貼到 模塊 窗口。

VBA代碼:在工作表中列出所有Pdf文件名和頁碼:

Sub Test()
    Dim I As Long
    Dim xRg As Range
    Dim xStr As String
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Dim xFileNum As Long
    Dim RegExp As Object
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
        Set xRg = Range("A1")
        Range("A:B").ClearContents
        Range("A1:B1").Font.Bold = True
        xRg = "File Name"
        xRg.Offset(0, 1) = "Pages"
        I = 2
        xStr = ""
        Do While xFileName <> ""
            Cells(I, 1) = xFileName
            Set RegExp = CreateObject("VBscript.RegExp")
            RegExp.Global = True
            RegExp.Pattern = "/Type\s*/Page[^s]"
            xFileNum = FreeFile
            Open (xFdItem & xFileName) For Binary As #xFileNum
                xStr = Space(LOF(xFileNum))
                Get #xFileNum, , xStr
            Close #xFileNum
            Cells(I, 2) = RegExp.Execute(xStr).Count
            I = I + 1
            xFileName = Dir
        Loop
        Columns("A:B").AutoFit
    End If
End Sub

4。 粘貼代碼後,然後按 F5 運行此代碼的關鍵,以及 瀏覽 彈出窗口,請選擇包含要列出的Pdf文件的文件夾併計算頁碼,請參見屏幕截圖:

doc數量pdf頁面1

5。 然後,單擊 OK 按鈕,所有Pdf文件名和頁碼都列在當前工作表中,請參見屏幕截圖:

doc數量pdf頁面2


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (71)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
效果很好! 非常感謝!
網站主持人對此評論進行了最小化
非常感謝您發佈如此豐富的信息
網站主持人對此評論進行了最小化
非常感謝,優秀的代碼對我很有幫助
網站主持人對此評論進行了最小化
無法正常工作,對於某些 pdf,對於某些 pdf,它顯示 0 並且對於某些不正確的頁碼
網站主持人對此評論進行了最小化
嗨,法瓦茲,
該代碼在我的 Excel 中運行良好,您使用哪個 Excel 版本?
或者您可以將您的詳細問題或pdf文件發送到我的Email:skyyang@extendoffice要。
網站主持人對此評論進行了最小化
嗨,天陽,

我和法瓦茲有同樣的問題。 我使用 MS Office Professional Plus 2013。

感謝您的幫助!

最好的問候
網站主持人對此評論進行了最小化
同樣發生在這里相同的pdf頁面歸零,請有人解釋一下
網站主持人對此評論進行了最小化
你好,文卡特什 G
該代碼在我的 Excel 中運行良好,請將您的 pdf 文件發送到我的電子郵件:yy@addin99.com。
以便我們檢查問題出在哪裡,謝謝!
網站主持人對此評論進行了最小化
問候


Hay algún problema con el programa, yo estoy usando la versión 2019 de Office, y las páginas parece que las va contando de mal las primeras 9 páginas acumuladas me sale cero, en la novena página acumulada me sale 10。

¿Por 喜歡我 puedes ayudar con ese inconveniente?

謝謝你提前。

ATTE。

彼得
網站主持人對此評論進行了最小化
聖! 這太棒了! 非常感謝! 我是打印機,一直在做 printit.txt 和手工填寫! 這將使報價和檢查工作變得更加容易! 再次感謝!!!
網站主持人對此評論進行了最小化
問候

程序有問題,我使用的是 Office 2019 版,頁面數似乎很糟糕,前 9 個累積頁面我得到零,在第九個累積頁面我得到 10。

你能幫我解決這個不便嗎?

預先非常感謝您。

ATTE。

彼得
網站主持人對此評論進行了最小化
該代碼是如何執行此類操作的良好結構,但該正則表達式將為許多 pdf 提供不可靠的結果。 正在搜索的正則表達式 (/Type\s*/Page[^s]) 在 SECURED pdf 中不起作用(計數為零)。 pdf 工具和版本在標記頁面的方式上也有所不同。 如果您知道所有 pdf 文件都是使用相同的結構(版本和工具)創建的,那可能是準確的。
網站主持人對此評論進行了最小化
非常感謝您的回答,我通過將文件另存為:“優化的 PDF”解決了這個問題
網站主持人對此評論進行了最小化
100% 同意 Pedro,我遇到了與 Rob 相同的問題,其中一些 PDF 頁數錯誤。 但是,如果您確保所有文件都在文件夾中保存為“優化的 PDF”,它將使所有頁面都正確。 這對我來說適用於 100 多個單獨的 PDF 文件。 您也可以使用 Acrobat Pro 進行批量優化。 整體很棒的代碼,如果你願意的話,開箱即用。
網站主持人對此評論進行了最小化
如果我也想遍歷子文件夾怎麼辦?
網站主持人對此評論進行了最小化
你好,普拉尚特,
要從文件夾和子文件夾中獲取所有 PDF 文件的數量,請應用以下代碼:

子測試()
暗淡我只要
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFdItem 調暗為變體
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
設置 xFd = Application.FileDialog(msoFileDialogFolderPicker)
如果 xFd.Show = -1 那麼
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
設置 xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "文件名"
xRg.Offset(0, 1) = "頁數"
我= 2
調用 SunTest(xFdItem, I)
如果結束
END SUB

Sub SunTest(xFdItem 作為變體,我只要)
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
將 xF 調暗為對象
將 xSF 調暗為對象
將 xFso 調暗為對象
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
xStr = ""
當 xFileName <> ""
單元格(I, 1) = xFileName
設置 RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = 自由文件
打開 (xFdItem & xFileName) 為二進製作為 #xFileNum
xStr = 空間(LOF(xFileNum))
獲取#xFileNum, , xStr
關閉 #xFileNum
單元格(I, 2) = RegExp.Execute(xStr).Count
我 = 我 + 1
xFileName = 目錄
循環
列(“A:B”).AutoFit
設置 xFso = CreateObject("Scripting.FileSystemObject")
設置 xF = xFso.GetFolder(xFdItem)
對於 xF.SubFolders 中的每個 xSF
調用 SunTest(xSF.Path & "\", I)
下一頁
END SUB

請嘗試,希望對您有所幫助!
網站主持人對此評論進行了最小化
您的子文件夾代碼工作正常! 謝謝
網站主持人對此評論進行了最小化
這太棒了,謝謝。 我也想遍歷子文件夾。 在上面的代碼中,我在哪裡/如何添加這些附加命令? 整個事情會是什麼樣子?
網站主持人對此評論進行了最小化
你能幫我得到文件的創建者和尺寸嗎?
網站主持人對此評論進行了最小化
它真的很棒。但是子文件夾名稱並沒有與 PDF 文件名和頁數進入單獨的列。 你能幫忙嗎?
網站主持人對此評論進行了最小化
神奇!
網站主持人對此評論進行了最小化
非常感謝你。
網站主持人對此評論進行了最小化
你好,
不客氣。 很高興它有幫助。 任何問題,請隨時與我們聯繫。 祝你有美好的一天。
此致,
曼迪
網站主持人對此評論進行了最小化
嗨,曼迪,
我收到運行時錯誤“5”:無效的過程調用或參數
調試到這一行:xStr = Space(LOF(xFileNum))
網站主持人對此評論進行了最小化
我正在運行,但出現錯誤,調試顯示 xStr = Space(LOF(xFileNum)) 為問題。
網站主持人對此評論進行了最小化
非常感謝您。
同樣,你能對 A3 和 A4 頁面進行計數和分類嗎?
網站主持人對此評論進行了最小化
這是我在網上某處找到的代碼,它不如您的方法最佳:
Option Explicit
公共 PDFDoc 作為 AcroPDDoc、PDFPage 作為對象、A3&、A4&

次主要()
將 fso 調暗為 FileSystemObject,fld 作為文件夾,fil 作為文件,s$,i&,Arr()
設置 fso = 新文件系統對象
設置 PDFDoc = 新 AcroPDDoc
設置 fld = fso.GetFolder(ThisWorkbook.Path)
ReDim Arr(1 到 1000、1 到 3)
對於 fld.Files 中的每個文件
s = 文件名
如果 Right(s, 4) = ".pdf" 那麼
CountPagesPDF (ThisWorkbook.Path & "\" & s)
我=我+ 1
Arr(i, 1) = 小號
排列 (i, 2) = A3
排列 (i, 3) = A4
如果結束
下一頁
Range("A2:C" & Cells.Rows.Count).Clear
範圍("A2:C" & (i + 1)) = Arr
設置 PDFPage = 無
設置 PDFDoc = 無
設置 fso = 無
END SUB

子 CountPagesPDF(FullFileName$)
暗淡 i&, n&, x, y
A3 = 0
A4 = 0
PDFDoc.Open(完整文件名)
n = PDFDoc.GetNumPages
對於 i = 0 到 n - 1
設置 PDFPage = PDFDoc.AcquirePage(i)
x = PDFPage.GetSize().x
y = PDFPage.GetSize().y
如果 x + y > 1500 則 A3 = A3 + 1 否則 A4 = A4 + 1
下一頁
PDFDoc.關閉
END SUB
網站主持人對此評論進行了最小化
哇! 非常感謝分享,這個 VBA 代碼是一個殺手! 它與 Excel O365 完美配合
網站主持人對此評論進行了最小化
哇。 子文件夾效果很好。 你能分享一下如何添加“文件路徑”和“文件大小”嗎?
網站主持人對此評論進行了最小化
你好,達芙妮,
為了解決您的問題,請應用以下代碼,請嘗試,希望對您有所幫助!

子測試()
暗淡我只要
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFdItem 調暗為變體
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
設置 xFd = Application.FileDialog(msoFileDialogFolderPicker)
如果 xFd.Show = -1 那麼
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
設置 xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "文件名"
xRg.Offset(0, 1) = "頁數"
xRg.Offset(0, 2) = "路徑"
xRg.Offset(0, 3) = "尺寸(b)"
我= 2
調用 SunTest(xFdItem, I)
如果結束
END SUB

Sub SunTest(xFdItem 作為變體,我只要)
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
將 xF 調暗為對象
將 xSF 調暗為對象
將 xFso 調暗為對象
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
xStr = ""
當 xFileName <> ""
單元格(I, 1) = xFileName
設置 RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = 自由文件
打開 (xFdItem & xFileName) 為二進製作為 #xFileNum
xStr = 空間(LOF(xFileNum))
獲取#xFileNum, , xStr
關閉 #xFileNum
單元格(I, 2) = RegExp.Execute(xStr).Count
單元格(I, 3) = xFdItem & xFileName
單元格(I, 4) = FileLen(xFdItem & xFileName)
我 = 我 + 1
xFileName = 目錄
循環
列(“A:B”).AutoFit
設置 xFso = CreateObject("Scripting.FileSystemObject")
設置 xF = xFso.GetFolder(xFdItem)
對於 xF.SubFolders 中的每個 xSF
調用 SunTest(xSF.Path & "\", I)
下一頁
END SUB
網站主持人對此評論進行了最小化
這太棒了。 謝謝!
網站主持人對此評論進行了最小化
嗨,天陽,
很抱歉撞了一個舊帖子。
感謝您提供上面的代碼,它對我幫助很大!
您能否善意地分享如何添加“文件創建日期”,格式僅為日期,不包括時間,DD/MMM/YYYY?
無論我在哪裡搜索,我似乎都無法自己編輯您的代碼以正確執行此操作..

預先感謝您!

射線
網站主持人對此評論進行了最小化
哦,我明白了,這是整個代碼。 我試圖添加到原始文件中,但出現錯誤。 謝謝!
網站主持人對此評論進行了最小化
您好!

有沒有辦法也添加文檔的頁碼,而且我得到一個錯誤,這是消息:
xStr = 空間(LOF(xFileNum))


非常感謝你。
網站主持人對此評論進行了最小化
很棒的代碼! 我無法讓它在子文件夾中工作。 任何人都可以幫助我嗎?
網站主持人對此評論進行了最小化
voce conseguiu achar uma maneira de funcionar em subpastas?
網站主持人對此評論進行了最小化
你好,弗拉維奧,
要從文件夾和子文件夾中獲取所有 PDF 文件的數量,請應用以下代碼:

Sub Test()
Dim I As Long
Dim xRg As Range
Dim xStr As String
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Dim xFileNum As Long
Dim RegExp As Object
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
Set xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "File Name"
xRg.Offset(0, 1) = "Pages"
I = 2
Call SunTest(xFdItem, I)
End If
End Sub

Sub SunTest(xFdItem As Variant, I As Long)
Dim xRg As Range
Dim xStr As String
Dim xFd As FileDialog
Dim xFileName As String
Dim xFileNum As Long
Dim RegExp As Object
Dim xF As Object
Dim xSF As Object
Dim xFso As Object
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
xStr = ""
Do While xFileName <> ""
Cells(I, 1) = xFileName
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = FreeFile
Open (xFdItem & xFileName) For Binary As #xFileNum
xStr = Space(LOF(xFileNum))
Get #xFileNum, , xStr
Close #xFileNum
Cells(I, 2) = RegExp.Execute(xStr).Count
I = I + 1
xFileName = Dir
Loop
Columns("A:B").AutoFit
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xF = xFso.GetFolder(xFdItem)
For Each xSF In xF.SubFolders
Call SunTest(xSF.Path & "\", I)
Next
End Sub


請嘗試,希望對您有所幫助!
網站主持人對此評論進行了最小化
模擬功能! muito obrigado

Alguns 文檔 .pdf estao sendo analisados com 0 paginas incorretamente。 Saberia me dizer o porque?
網站主持人對此評論進行了最小化
你好,弗拉維奧,
您可以在此處上傳您的 PDF 文件,以便我們檢查問題。
感謝您!
網站主持人對此評論進行了最小化
Opa, super top, consegue adicionar para aparecer o tamanho do arquivo, na terceira coluna ?
網站主持人對此評論進行了最小化
你好,SrdosPDF
以下 VBA 代碼可能會對您有所幫助,請嘗試一下:
Sub Test()
Dim I As Long
Dim xRg As Range
Dim xStr As String
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Dim xFileNum As Long
Dim RegExp As Object
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
Set xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "File Name"
xRg.Offset(0, 1) = "Pages"
xRg.Offset(0, 2) = "Size(b)"
I = 2
Call SunTest(xFdItem, I)
End If
End Sub

Sub SunTest(xFdItem As Variant, I As Long)
Dim xRg As Range
Dim xStr As String
Dim xFd As FileDialog
Dim xFileName As String
Dim xFileNum As Long
Dim RegExp As Object
Dim xF As Object
Dim xSF As Object
Dim xFso As Object
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
xStr = ""
Do While xFileName <> ""
Cells(I, 1) = xFileName
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = FreeFile
Open (xFdItem & xFileName) For Binary As #xFileNum
xStr = Space(LOF(xFileNum))
Get #xFileNum, , xStr
Close #xFileNum
Cells(I, 2) = RegExp.Execute(xStr).Count
Cells(I, 3) = FileLen(xFdItem & xFileName)
I = I + 1
xFileName = Dir
Loop
Columns("A:B").AutoFit
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xF = xFso.GetFolder(xFdItem)
For Each xSF In xF.SubFolders
Call SunTest(xSF.Path & "\", I)
Next
End Sub

希望這可以幫到你!
網站主持人對此評論進行了最小化
太謝謝你了
網站主持人對此評論進行了最小化
你好,很好用,謝謝分享。 一個問題,是否可以添加也計算 microsoft word .doc 和 .docx 文件?
網站主持人對此評論進行了最小化
嗨,斯羅切托,
要計算 .doc 和 .docx 以及 PDF 文件的頁碼,請應用以下代碼:
子測試()
暗淡我只要
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFdItem 調暗為變體
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
暗淡 xWdApp
暗淡 xWd
設置 xFd = Application.FileDialog(msoFileDialogFolderPicker)
如果 xFd.Show = -1 那麼
Application.ScreenUpdating = False
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
設置 xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "文件名"
xRg.Offset(0, 1) = "頁數"
我= 2
xStr = ""
當 xFileName <> ""
單元格(I, 1) = xFileName
設置 RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = 自由文件
打開 (xFdItem & xFileName) 為二進製作為 #xFileNum
xStr = 空間(LOF(xFileNum))
獲取#xFileNum, , xStr
關閉 #xFileNum
單元格(I, 2) = RegExp.Execute(xStr).Count
我 = 我 + 1
xFileName = 目錄
循環
xFileName = Dir(xFdItem & "*.docx", vbDirectory)
設置 xWdApp = CreateObject("Word.Application")
當 xFileName <> ""
單元格(I, 1) = xFileName
xFileNum = 自由文件
設置 xWd = GetObject(xFdItem & xFileName)
單元格(I, 2) = xWd.ActiveWindow.Panes(1).Pages.Count
xWd.Close 錯誤
我 = 我 + 1
xFileName = 目錄
循環
列(“A:B”).AutoFit
如果結束
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
謝了哥們! 它適用於 pdf 和 docx,但不適用於 doc 文件。 還有一個問題,您能否補充一下,這也將計入子文件夾中?
網站主持人對此評論進行了最小化
我打開了一個 pdf 文件,其路徑和名稱在 excel 單元格列“C9”中提及。 我只想在 excel vba 中獲取最後頁碼,請幫助我
網站主持人對此評論進行了最小化
你好,這個真的很好用,謝謝。 是否可以在新列中獲取第一頁的頁面大小? 例如 8.5 x 11、11 x 17 等。
網站主持人對此評論進行了最小化
您好,這很好用,謝謝!是否可以獲得 PDF 文檔第一頁的頁面大小?
網站主持人對此評論進行了最小化
你好,
是否還可以在此宏中獲取頁面的尺寸和 pdf 的創建者?
有人可以幫我弄這個嗎?
網站主持人對此評論進行了最小化
有沒有辦法包含 .doc 我注意到它適用於 .docx 但不適用於 .doc
網站主持人對此評論進行了最小化
嗨,約翰,要計算 .doc 和 .docx 以及 PDF 文件的頁數,請應用以下代碼: 子統計頁面()
暗淡我只要
將 xRg 調暗為範圍
將 xStr 調暗為字符串
將 xFd 調暗為 FileDialog
將 xFdItem 調暗為變體
將 xFileName 調暗為字符串
將 xFileNum 變暗
將 RegExp 調暗為對象
暗淡 xWdApp
暗淡 xWd
設置 xFd = Application.FileDialog(msoFileDialogFolderPicker)
如果 xFd.Show = -1 那麼
Application.ScreenUpdating = False
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
設置 xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "文件名"
xRg.Offset(0, 1) = "頁數"
我= 2
xStr = ""
當 xFileName <> ""
單元格(I, 1) = xFileName
設置 RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
xFileNum = 自由文件
打開 (xFdItem & xFileName) 為二進製作為 #xFileNum
xStr = 空間(LOF(xFileNum))
獲取#xFileNum, , xStr
關閉 #xFileNum
單元格(I, 2) = RegExp.Execute(xStr).Count
我 = 我 + 1
xFileName = 目錄
循環
xFileName = Dir(xFdItem & "*.docx", vbDirectory)
設置 xWdApp = CreateObject("Word.Application")
當 xFileName <> ""
單元格(I, 1) = xFileName
xFileNum = 自由文件
設置 xWd = GetObject(xFdItem & xFileName)
單元格(I, 2) = xWd.ActiveWindow.Panes(1).Pages.Count
xWd.Close 錯誤
我 = 我 + 1
xFileName = 目錄
循環
xFileName = Dir(xFdItem & "*.doc", vbDirectory)
設置 xWdApp = CreateObject("Word.Application")
當 xFileName <> ""
單元格(I, 1) = xFileName
xFileNum = 自由文件
設置 xWd = GetObject(xFdItem & xFileName)
單元格(I, 2) = xWd.ActiveWindow.Panes(1).Pages.Count
xWd.Close 錯誤
我 = 我 + 1
xFileName = 目錄
循環
列(“A:B”).AutoFit
如果結束
Application.ScreenUpdating = True
完子請試一試,希望能幫到你!
網站主持人對此評論進行了最小化
謝謝,這有很大幫助。
網站主持人對此評論進行了最小化
嗨,我有一個包含多個子文件夾的文件夾如何在不手動選擇的情況下指定父文件夾路徑。 然後還輸出子文件夾的名稱。 提前致謝 
網站主持人對此評論進行了最小化
嗨排序我已經編輯了刪除 XFD 的代碼並將 filpath 設置為 xfditem
網站主持人對此評論進行了最小化
嗨 Skyyang,首先我要感謝您所做的令人難以置信的工作,以及您花費的時間......我正在尋找一段時間的 VBA 代碼:我有一個 Excelsheet,在“J”列中有一個列表位於數據室目錄(帶有子目錄)中的 pdf、xlsx 和 elm 文件的文件名完整,類型為 X:\Data_Room\Sub_directory_1\file.pdf 代碼應使用每個 .pdf 的頁數填寫“I”列和 .xls 文件(不需要其他文件,cels 應該保持空白)你能幫幫我嗎?
網站主持人對此評論進行了最小化
是否有可能將其擴展為從每個 pdf 的第一頁中提取貝茨編號?
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護