
あるフォルダに数十個というWordファイルがあり、その
ファイル一つ一つを開いてページ数を調べたりファイル1つ1つの
プロパティを調べてページ数を加えていくのは非常に手間なので
できれば「このフォルダにあるWordファイルの総ページ数を知りたい」
という要求に対して一発で解決したいと思っています。
各Wordファイルのプロパティを一覧化してくれたり、
Wordファイル分ループで回ってそれらを足しこんでくれる
ツールなどは無いでしょうか。
Wordはバージョン2003でOSはXP SP2を使っています。

No.2ベストアンサー
- 回答日時:
ツールは知りません。
質問者さんの立場と要求者との関係もわかりません。
もし質問者さんがご自分でスクリプトを書く覚悟があるのなら下記の VBScript をお試し下さい。
空のテキストファイルに以下のコードをコピペして保存し、そのテキストファイルの拡張子を vbs に変更してからファイルをダブルクリックしてみてください。
フォルダ選択ダイアログが表示され、Word ファイルが入っているフォルダを選択して [OK] をクリックすると Word が実行され、次々にファイルを開いては閉じるを繰り返し、最終的に合計ページ数が表示されます。
Option Explicit
Const wdStatisticPages = 2
Dim targetPath
targetPath = GetTargetDir
If TargetPathExists(targetPath) Then
wscript.Echo "ページ合計: " & CountPage(targetPath)
Else
wscript.Echo "フォルダ パスが不正です"
End If
Function GetTargetDir()
Dim objShell, objFolder
Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択", 0)
If Not objFolder Is Nothing Then
GetTargetDir = objFolder.Items.Item.Path
End If
Set objFolder = Nothing
Set objShell = Nothing
End Function
Function TargetPathExists(aTargetPath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
TargetPathExists = fso.FolderExists(aTargetPath)
End Function
Function CountPage(aTargetPath)
Dim strComputer
strComputer = "."
Dim objWMIService
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Dim colFiles
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" & aTargetPath & "'} Where " & _
"ResultClass = CIM_DataFile")
Dim objWord
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Dim intPages
intPages = 0
Dim objFile
For Each objFile in colFiles
If objFile.Extension = "doc" Then
Dim objDoc
Set objDoc = objWord.Documents.Open(objFile.Name)
intPages = intPages + objDoc.ComputeStatistics(wdStatisticPages)
objDoc.Saved = True
objDoc.Close
End If
Next
objWord.Quit
CountPage = intPages
End Function
この回答への補足
こちらの方はWordファイルのプロパティを拾ってきているようで
プロパティのページ数と実際のページ数が違っていれば
実際のページ数を正確に拾ってきてくれないようです。
残念です。
VBスクリプトをさくっと書ける人にとっては
ツール化するまでもないからツールが無いんですかね...
内容をがんばって把握してから実施してみたいと思います。
ありがとうございました。
No.4
- 回答日時:
> こちらの方はWordファイルのプロパティを拾ってきているようで
> プロパティのページ数と実際のページ数が違っていれば
> 実際のページ数を正確に拾ってきてくれないようです。
その通りです。ファイルのプロパティーを列挙しています。したがって
fn = Dir(f.Self.Path & "\*.doc")
の拡張子部分を変更すると、Excel ファイルなどにも応用できますし、
ちょこっとコードを変更すると、MP3ファイルのビットレートやID3タグ
の内容なんかも列挙することができます。
# 詳しくは GetDetailsOf で検索すると情報が得られます
WORD ファイルについて、実際のページ数とは異なる場合がある点は私も
認識しておりましたが、既に #1 の良回答があったにも関わらず回答した
意図は、処理速度に重点を置き
> 各Wordファイルのプロパティを一覧化してくれたり、
といったご希望に沿う...というものです。
> なぜ、プロパティには正しい値が入らないんですかね...
私にも詳しくはわかりませんが、プロパティーは「保存時」に更新
されるようですから、一度そのファイルを開いてから、上書き保存を行う
と正しいページ数になりますよ。
ありがとうございます。色々応用できそうですね。
ただ、お教えいただいた上書き保存を行っても
ページ数は全然変わらないですね...
単語数や文字数はちゃんと正しい数値が常に入っているので
肝心のページ数だけが1ページから一切変わらない状態です。
ちなみにOSもWordも当方とバージョンは同じでしょうか。
同じであれば何が違うんでしょうかねぇ...
当方では簡単に何文字か適当な文字を入れる→Ctrl+Enterで改ページ
を繰り返してページ数を増やしていっていますが
プロパティのページ数には全然反映されません。
No.3
- 回答日時:
こんばんは。
かなり適当だけど Shell の GetDetailsOf メソッドを使った例です。
Excel VBA ですよ。標準モジュールにでも貼り付けて下さい。そして、
ページ数の総合計は SUM 関数でも使って下さい。(単なる手抜きです)
では。
Public Sub EnumDocFilePropaties()
Const ERR_USER_CANCEL As Long = 1000
Const ERR_NOT_FOUND As Long = 1001
Dim oShell As Object
Dim f As Object
Dim fn As String
Dim i As Long
Dim r As Long
On Error GoTo Err_
' // フォルダ選択ダイアログ
Set oShell = CreateObject("Shell.Application")
Set f = oShell.BrowseForFolder(0&, "フォルダを選んで下さい", 0&)
If f Is Nothing Then
Err.Raise ERR_USER_CANCEL
End If
' // 初回 Word ファイル検索
fn = Dir(f.Self.Path & "\*.doc")
If Len(fn) = 0 Then
Err.Raise ERR_NOT_FOUND, , "*.doc ファイルが無いみたい"
End If
' // 見出し作成
Set f = oShell.NameSpace(f.Self.Path)
Cells.Clear
r = 1
Application.ScreenUpdating = False
For i = 0 To 14
Cells(r, i + 1).Value = f.GetDetailsOf(, i)
Next
' // プロパティー値列挙
While Len(fn) > 0
r = r + 1
For i = 0 To 14
Cells(r, i + 1).Value = f.GetDetailsOf(f.ParseName(fn), i)
Next
fn = Dir()
Wend
Cells.EntireColumn.AutoFit
Bye_:
Set oShell = Nothing
Set f = Nothing
Exit Sub
Err_:
Select Case Err.Number
Case 1000 ' // User Cancel
Resume Bye_
Case Else ' // Other Error
MsgBox Err.Description, vbCritical
Resume Bye_
End Select
End Sub
この回答への補足
失礼しました。No.2とNo.3の方の補足を間違えてしまいました。
ExcelVBAの方がプロパティを持ってきているので正しい値が表示されないですね。
VBスクリプトの方は
Set objDoc = objWord.Documents.Open(objFile.Name)
intPages = intPages + objDoc.ComputeStatistics(wdStatisticPages)
をFor Nextで回して一つ一つファイルを開いて足しこんでいるので
正しいページが拾ってこれているようです。
なぜ、プロパティには正しい値が入らないんですかね...
temtecomai2さん、ありがとうございました。
VBAスクリプトをさくっと書ける人にとっては
ツール化するまでもないからツールが無いんですかね...
内容をがんばって把握してから実施してみたいと思います。
ありがとうございました。
No.1
- 回答日時:
こんばんは
外しているかもしれませんが、
エクスプローラで詳細表示した際、その項目に
「ページ数」というカテゴリも表示可能です。
表示するにはエクスプローラの「名前」「サイズ」などの
表示している所で右クリックし、「その他...」
でページ数にチェックを入れます。
これでワードのファイルならページ数が表示できます。
(但し、図を貼り付けただけのファイルなどでは正しい
ページ数が表示できないこともあるようです。
また他の形式ファイルではあまり意味が無いかも)
では。
エクスプローラで表示できる列ってカスタマイズできるんですね。
知りませんでした。
でも簡単なワードファイル作って見てみたら
画像とか入れてないのですが、
いくらページ数を増やしても表示される数字は1のまま...
プロパティから見ても1ページのままなんでWordのバグですかね...
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- システム科学 レポートについて 3 2022/11/01 18:45
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Word(ワード) 例えば、1ページから28ページまでの字数を数える時に、 WORDファイルで1ページから28ページまで 3 2023/01/11 09:09
- フリーソフト ファイル保存できるデジタルノートアプリ 3 2022/05/03 09:11
- Word(ワード) 9枚の写真がA4 1枚に印刷できました。しかし配列が思うようになりません。 5 2023/07/02 17:15
- Word(ワード) WordからPDF保存した時の目次ジャンプ機能について 1 2022/06/10 10:59
- Visual Basic(VBA) 複数ページあるPDFファイル内の文字列等の情報をキーにPDFをグループ分け分割したい。 2 2022/06/25 09:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子はなぜ、大文字と小文字...
-
フォルダの中に1個しかファイ...
-
Excelの「アクセシビリティ 検...
-
フォルダーのプロパティで表示...
-
ファイルの開き方(拡張子なし)
-
パソコンのスキップとは何ですか?
-
vssver2.scc って消してもいい...
-
白い書類のアイコン。どうすれ...
-
ターミナルソフトで全スクロー...
-
DLLファイル USERENV.DLLが見...
-
windows (ウィンドウズ) の 「...
-
macユーザーです!拡張子「Thum...
-
Microsoft Excel previewer に...
-
全てのファイルに拡張子を付けたい
-
ワードやエクセルのファイル名...
-
SETTING.DATファイルの削除方法
-
mpegファイルを簡単に切るソフ...
-
Wordでのバックアプファイ...
-
Stuffit expanderのエラー
-
FDのファイルが開けない。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
拡張子はなぜ、大文字と小文字...
-
フォルダの中に1個しかファイ...
-
ファイルの開き方(拡張子なし)
-
windows (ウィンドウズ) の 「...
-
Excelの「アクセシビリティ 検...
-
ターミナルソフトで全スクロー...
-
パソコンのスキップとは何ですか?
-
vssver2.scc って消してもいい...
-
macユーザーです!拡張子「Thum...
-
任意のフォルダを選択し、その...
-
ワードやエクセルのファイル名...
-
フォルダーのプロパティで表示...
-
移動先にも同じファイル名が存...
-
Wordのファイルを開いたとき最...
-
プロパティの「所有者」の削除
-
Microsoft Excel previewer に...
-
Pagesで、PDFをうまく挿入したい
-
特定の拡張子のファイルを表示...
-
エクスプローラでファイルを表...
-
複数のワードファイルで合計ペ...
おすすめ情報