Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


58 / 308 ツリー ←次へ | 前へ→

【669】頁(目)および行(目)の取得 あんぽんたん 10/2/8(月) 21:39 質問[未読]
【670】Re:頁(目)および行(目)の取得 りる 10/2/11(木) 9:16 回答[未読]
【671】Re:頁(目)および行(目)の取得 あんぽんたん 10/2/11(木) 12:39 お礼[未読]
【673】Re:頁(目)および行(目)の取得 あんぽんたん 10/2/17(水) 22:00 質問[未読]
【675】Re:頁(目)および行(目)の取得 りる 10/2/21(日) 18:33 回答[未読]
【677】Re:頁(目)および行(目)の取得 あんぽんたん 10/2/23(火) 21:26 お礼[未読]
【678】Re:頁(目)および行(目)の取得 りる 10/2/26(金) 4:11 発言[未読]
【746】Re:頁(目)および行(目)の取得 マナ 13/5/2(木) 15:18 発言[未読]

【669】頁(目)および行(目)の取得
質問  あんぽんたん  - 10/2/8(月) 21:39 -

引用なし
パスワード
   困っています。お願いします。

適当な選択位置での頁(目)および行(目)を取得
しようとしましたが、下記のような問題が発生しました。
解決策をお願いします。


実施例

ActiveDocument.word.count でWORD数を求め

適当な位置のWORDを選択

Activedocument.words(i).Select

その位置での頁(目)および行(目)を

'頁(目)
Selection.Information(wdActiveEndPageNumber)

行(目)
Selection.Information(wdFirstCharacterLineNumber)

とすると

コンパイルエラー 
dActiveEndPageNumber および wdFirstCharacterLineNumber が
変数として定義されていません

との警告がでます。

helpではこれらは、Information(Type)における Typeとして定義
されています。

解決法があれば教えてください。

【670】Re:頁(目)および行(目)の取得
回答  りる  - 10/2/11(木) 9:16 -

引用なし
パスワード
   おはようございます。

>適当な選択位置での頁(目)および行(目)を取得
>しようとしましたが、下記のような問題が発生しました。
>解決策をお願いします。

Word はどのように指定しているのかがわからないので、単純に文字位置で試してみました。

Sub test()
  '文字数はCharacters
  Imax = ActiveDocument.Characters.Count
  '適当な文字位置(乱数で取得)
  Randomize Int(Now)
  i = Int(Imax * Rnd + 1)
  ActiveDocument.Characters(i).Select
  'Word-VBA,Wd2003でエラーなし
  MsgBox Selection.Information(wdActiveEndPageNumber), vbInformation, "頁"
  MsgBox Selection.Information(wdFirstCharacterLineNumber), vbInformation, "行"
End Sub

適当な文書(複数ページ有)を開いて実行してみたら大丈夫でした。

>解決法があれば教えてください。
ワードVBAで実行できないのであれば、
 参照設定を「参照不可」になっているものがないかを確認してみる。
 名前つき定数を使用しないで直接数値を指定する。
  wdActiveEndPageNumber     → 3
  wdFirstCharacterLineNumber  → 10

【671】Re:頁(目)および行(目)の取得
お礼  あんぽんたん  - 10/2/11(木) 12:39 -

引用なし
パスワード
   るりさん

おはようございます。


勤務先(xpProffesional、Word2003)での
結果で質問さていただいた件です。

自宅のPC(xpHome Edd.、Word2000)では
すんなり実行できました。
ありがとうございます。

勤務先のPCは今後確認します。

>ワードVBAで実行できないのであれば、
> 参照設定を「参照不可」になっているものがないかを確認してみる。

もう少し具体的にご教示願います。


▼りる さん
>おはようございます。
>
>>適当な選択位置での頁(目)および行(目)を取得
>>しようとしましたが、下記のような問題が発生しました。
>>解決策をお願いします。
>
>Word はどのように指定しているのかがわからないので、単純に文字位置で試してみました。
>
>Sub test()
>  '文字数はCharacters
>  Imax = ActiveDocument.Characters.Count
>  '適当な文字位置(乱数で取得)
>  Randomize Int(Now)
>  i = Int(Imax * Rnd + 1)
>  ActiveDocument.Characters(i).Select
>  'Word-VBA,Wd2003でエラーなし
>  MsgBox Selection.Information(wdActiveEndPageNumber), vbInformation, "頁"
>  MsgBox Selection.Information(wdFirstCharacterLineNumber), vbInformation, "行"
>End Sub
>
>適当な文書(複数ページ有)を開いて実行してみたら大丈夫でした。
>
>>解決法があれば教えてください。
>ワードVBAで実行できないのであれば、
> 参照設定を「参照不可」になっているものがないかを確認してみる。
> 名前つき定数を使用しないで直接数値を指定する。
>  wdActiveEndPageNumber     → 3
>  wdFirstCharacterLineNumber  → 10

【673】Re:頁(目)および行(目)の取得
質問  あんぽんたん  - 10/2/17(水) 22:00 -

引用なし
パスワード
   るりさま

アドバイスありがとうございました。

WORDのVBA Project では問題なく動きました。


ただし、以下の操作でトラブルが発生しました。
アドバイスいただければ幸いです。

ExcelのVBA ProjectからWordを操作して

(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.Information(wdActiveEndPageNumber)
あるいは
(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.InformationwdFirstCharacterLineNumber)

として、ページ数あるいは行目を

取得してセルに入れようとすると

このコードで

  実行時エラー;"438"
  オブジェクトは、このプロパティまたはメソッドをサポートしていません

との警告が出ます。

このコードの前では、 (定義したWorkbook)の部分は難なくスルーします。

対応策をご教授願います。


なお、

> 参照設定を「参照不可」になっているものがないかを確認してみる。

参照不可 はありません。


> 参照設定を「参照不可」になっているものがないかを確認してみる。
> 名前つき定数を使用しないで直接数値を指定する。
>  wdActiveEndPageNumber     → 3
>  wdFirstCharacterLineNumber  → 10

この場合、表記法は、

MsgBox Selection.Information(3), vbInformation, "頁"

MsgBox Selection.Information(10), vbInformation, "行"

となるのでしょうか。

お尋ねします。


▼りる さん:
>おはようございます。
>
>>適当な選択位置での頁(目)および行(目)を取得
>>しようとしましたが、下記のような問題が発生しました。
>>解決策をお願いします。
>
>Word はどのように指定しているのかがわからないので、単純に文字位置で試してみました。
>
>Sub test()
>  '文字数はCharacters
>  Imax = ActiveDocument.Characters.Count
>  '適当な文字位置(乱数で取得)
>  Randomize Int(Now)
>  i = Int(Imax * Rnd + 1)
>  ActiveDocument.Characters(i).Select
>  'Word-VBA,Wd2003でエラーなし
>  MsgBox Selection.Information(wdActiveEndPageNumber), vbInformation, "頁"
>  MsgBox Selection.Information(wdFirstCharacterLineNumber), vbInformation, "行"
>End Sub
>
>適当な文書(複数ページ有)を開いて実行してみたら大丈夫でした。
>
>>解決法があれば教えてください。
>ワードVBAで実行できないのであれば、
> 参照設定を「参照不可」になっているものがないかを確認してみる。
> 名前つき定数を使用しないで直接数値を指定する。
>  wdActiveEndPageNumber     → 3
>  wdFirstCharacterLineNumber  → 10

【675】Re:頁(目)および行(目)の取得
回答  りる  - 10/2/21(日) 18:33 -

引用なし
パスワード
   あんぽんたん さん、こんばんわ。

>ExcelのVBA ProjectからWordを操作して
>
>(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.Information(wdActiveEndPageNumber)
>あるいは
>(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.InformationwdFirstCharacterLineNumber)
>

Excel VBAでは wdFirstCharacterLineNumber や wdActiveEndPageNumber
は未定義です。

なので、
>> 名前つき定数を使用しないで直接数値を指定する。
>>  wdActiveEndPageNumber     → 3
>>  wdFirstCharacterLineNumber  → 10
>
>この場合、表記法は、
>
> MsgBox Selection.Information(3), vbInformation, "頁"
>
> MsgBox Selection.Information(10), vbInformation, "行"
>

で試してみてください。

【677】Re:頁(目)および行(目)の取得
お礼  あんぽんたん  - 10/2/23(火) 21:26 -

引用なし
パスワード
   ▼りる さん:

ありがとうございます。
早速試してみます。

ただ、参照設定しても名前つき定数を認識できない
のが不思議です。


>あんぽんたん さん、こんばんわ。
>
>>ExcelのVBA ProjectからWordを操作して
>>
>>(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.Information(wdActiveEndPageNumber)
>>あるいは
>>(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.InformationwdFirstCharacterLineNumber)
>>
>
>Excel VBAでは wdFirstCharacterLineNumber や wdActiveEndPageNumber
>は未定義です。
>
>なので、
>>> 名前つき定数を使用しないで直接数値を指定する。
>>>  wdActiveEndPageNumber     → 3
>>>  wdFirstCharacterLineNumber  → 10
>>
>>この場合、表記法は、
>>
>> MsgBox Selection.Information(3), vbInformation, "頁"
>>
>> MsgBox Selection.Information(10), vbInformation, "行"
>>
>
>で試してみてください。

【678】Re:頁(目)および行(目)の取得
発言  りる  - 10/2/26(金) 4:11 -

引用なし
パスワード
   あんぽんたん さん、こんばんわ。

>ただ、参照設定しても名前つき定数を認識できない
>のが不思議です。

気になったのでやってみました。
Sub test()
  Debug.Print "wdActiveEndPageNumber :", wdActiveEndPageNumber
  Debug.Print "wdFirstCharacterLineNumber :", wdFirstCharacterLineNumber
End Sub
こんなマクロで(XL2003-VBA)。

参照設定なし。
wdActiveEndPageNumber :  
wdFirstCharacterLineNumber :       

ツール→参照設定で、
Microsoft Word 11.0 Object Library にチェックをつけて(組み込んで)実行

wdActiveEndPageNumber :   3
wdFirstCharacterLineNumber :        10

入りました。あれ?

【746】Re:頁(目)および行(目)の取得
発言  マナ  - 13/5/2(木) 15:18 -

引用なし
パスワード
   今更でもう解決しているかもしれませんが。
自分の勉強を兼ねて確認してみました。

>ExcelのVBA ProjectからWordを操作して
>
>(定義したWorkbook).Sheet(i)Cells(m,n).value = Selection.Information(wdActiveEndPageNumber)

↑この時の、SelectionはExcel側なのではないかと思います。

こんな感じにすればうまくいくようです。

Sub test()
  Const myName As String = "D:\***\****\るりさま.doc"
  Dim myDoc As Object
  
  With CreateObject("Word.Application")
    Set myDoc = .Documents.Open(myName)
    .Visible = True
    myDoc.Characters(500).Select
    Range("A1").Value = .Selection.Information(3)  'wdActiveEndPageNumber
    Range("A2").Value = .Selection.Information(10) 'wdFirstCharacterLineNumber
    myDoc.Close False
    .Quit
  End With

End Sub

58 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207136
(SS)C-BOARD v3.8 is Free