これは、元の質問「現在の段落の数は?」の拡張として意図されています。これは、iWork Pages に関する質問にうまく答えてくれます。http://macscripter.net/viewtopic.php?id=29125
Microsoft Word で同じことをしたいと思います。段落番号を取得できる VBA スクリプトを見つけました (以下を参照) が、VBA スクリプトがどのように機能するかがわからないため、行き詰まっています (以下も参照)
更新 17-05-2013
この問題には 2 つの解決策があります。VBA を読んでコードを調べたところ、VBA スクリプトが段落番号を決定する方法に気付きました。実際、それは非常に簡単です。文字 0 からカーソル位置までの範囲を設定し、その範囲内の段落をカウントします。
したがって、私の質問には2つの解決策があります。
CurPos
ドキュメントの位置 0 から位置 までの範囲を作成するには、VBA に相当する AppleScript を使用しますcursor
。範囲内の段落をカウントします。- VBA スクリプトを使用して段落番号を変数に設定し、AppleScript を介してその変数にアクセスします
私の最終的な目標は、すべてのテーブルを検索し、その前後に連続するセクション区切りを挿入するドキュメントに対してループを実行することです。
次の VBA スクリプトは、必要なデータなど (段落、絶対行番号、相対行番号) を表示するポップアップ ダイアログを提供します。このスクリプトの出力を、AppleScript 経由でアクセスできるドキュメント変数に設定するのを手伝ってくれる人がいるかもしれません。
Open this Scriplet in your Editor:
get variable value of variable "paragraphNum" of active document
VBAスクリプトは次のとおりです。
Option Explicit
Sub WhereAmI()
MsgBox "Paragraph number: " & GetParNum(Selection.Range) & vbCrLf & _
"Absolute line number: " & GetAbsoluteLineNum(Selection.Range) & vbCrLf & _
"Relative line number: " & GetLineNum(Selection.Range)
End Sub
Function GetParNum(r As Range) As Integer
Dim rParagraphs As Range
Dim CurPos As Integer
r.Select
CurPos = ActiveDocument.Bookmarks("\startOfSel").Start
Set rParagraphs = ActiveDocument.Range(Start:=0, End:=CurPos)
GetParNum = rParagraphs.Paragraphs.Count
End Function
Function GetLineNum(r As Range) As Integer
'relative to current page
GetLineNum = r.Information(wdFirstCharacterLineNumber)
End Function
Function GetAbsoluteLineNum(r As Range) As Integer
Dim i1 As Integer, i2 As Integer, Count As Integer, rTemp As Range
r.Select
Do
i1 = Selection.Information(wdFirstCharacterLineNumber)
Selection.GoTo what:=wdGoToLine, which:=wdGoToPrevious, Count:=1, Name:=""
Count = Count + 1
i2 = Selection.Information(wdFirstCharacterLineNumber)
Loop Until i1 = i2
r.Select
GetAbsoluteLineNum = Count
End Function
段落番号を取得したら、これと同様のことを行うことで、前に連続するセクション区切りを挿入できます (もちろん、前の段落の最後の文字と後続の段落の最初の文字を選択する必要がありますが、最初にテーブルの段落番号を取得します!):
Open this Scriplet in your Editor:
insert break at text object of selection break type section break continuous
モデル: Macbook Air 2011 AppleScript: 2.5.1 (138.1) ブラウザ: Firefox 20.0 オペレーティング システム: Mac OS X (10.8)