No.3ベストアンサー
- 回答日時:
またまた登場、kobouzuなり。
Sub テキストボックス変換()
Dim i
Dim sp As Shape
● Set sp = ActiveDocument.Shapes(i)
▲ For i = ActiveDocument.Shapes.Count To 1 Step -1
If sp.Type = msoTextBox Then
sp.ConvertToFrame
End If
Next
End Sub
●と▲の順序が逆ですよ~、、、(^^;;;
------正しい順序------------------------------------
For i = ActiveDocument.Shapes.Count To 1 Step -1
Set sp = ActiveDocument.Shapes(i)
-----------------------------------------------------
それにしても何故、取っ付きにくいWord VBAを勉強されているのでしょう。
ExcelVBAに比べて、WordVBAは回答もつきにくいですよ。
>●と▲の順序が逆ですよ~、、、(^^;;;
そうなのですかぁ・・・? 「Set sp = ActiveDocument.Shapes(i)」
は上だと思ってました。なにせまだマクロ勉強し始めて数週間なもので。
とりあえずうまくいきました!
>それにしても何故、取っ付きにくいWord VBAを勉強されているのでしょう。
在宅でWord編集の仕事をしているんですよ。少しでも作業を効率アップさせたいというのが目的なんです。
>ExcelVBAに比べて、WordVBAは回答もつきにくいですよ。
そうなんですよね。Excel VBAは書籍も迷うほどあるというのに、Word VBAは今手に入るのは一冊のみ。ネットでも情報が乏しいし、詳しい方も少ないんでしょうねー。
でも、今はWordの仕事がほとんどだし、Wordで頑張ります。
Excelの仕事が増えれば、VBAも学びたいけど、まず一般機能からの勉強が必要だろうなぁ・・・。
またここでお世話になるかもしれませんが、そのときはよろしくお願いします。
今回はありがとうございました<m(__)m>
No.2
- 回答日時:
No1,kobouzuです。
>Set sp = ActiveDocument.Shapes(i)」を追加したところ
>「指定したコレクションに対するインデックスが境界を超えています」というエラーが出てしまいました。
おっと、最重要事項を抜かしてました。(^^;;;
今回のようにコレクションの中のオブジェクトが減っていく処理をする時に
「For i=1 to 」のようにカウンターを使ってまわす場合は、
カウンターを、始めの方から最後へとまわすのではなくて
最後から始めの方へ、逆方向にまわさなければなりません。
For i = ActiveDocument.Shapes.Count To 1 Step -1
ですから、コレクションを扱う場合(特に今回のような場合)は、
コレクション用のFor Each を使う方がベターかな、と。
この回答への補足
kobouzuさん、何度もありがとうございます。
>カウンターを、始めの方から最後へとまわすのではなくて
最後から始めの方へ、逆方向にまわさなければなりません。
そうなのですか・・・。全然知らなかったです。
で、For i = ActiveDocument.Shapes.Count To 1 Step -1を追加しましたが、まだエラーがでます。どこが問題なのでしょうか?
Sub テキストボックス変換()
Dim i
Dim sp As Shape
Set sp = ActiveDocument.Shapes(i)
For i = ActiveDocument.Shapes.Count To 1 Step -1
If sp.Type = msoTextBox Then
sp.ConvertToFrame
End If
Next
End Sub
>ですから、コレクションを扱う場合(特に今回のような場合)は、
コレクション用のFor Each を使う方がベターかな、と。
やっぱりそうなんでしょうねぇ…。最近マクロの勉強を始めたので、今回はとりあえず構文を覚えるためにやってみているのですが、難しいですねー。
No.1
- 回答日時:
こんばんは。
WordのVBAは使ったことないですが。。。
オブジェクト変数、SPにオブジェクトがセットされてないですよね。
For i = 1 To ActiveDocument.Shapes.Count
●Set sp = ActiveDocument.Shapes(i)
If sp.Type = msoTextBox Then
と●部分を追加するか、For Eachを使って
For Each sp In ActiveDocument.Shapes
でどうでしょう。
kobouzu_suさん、ありがとうございます。
「Set sp = ActiveDocument.Shapes(i)」を追加したところ、今度は「指定したコレクションに対するインデックスが境界を超えています」というエラーが出てしまいました。
>For Each sp In ActiveDocument.Shapes
はじめは上記の構文で作ってみたのです。
これでうまくいったのですが、マクロの勉強中なので、今度は「For to」の構文で作ってみようと思ったのです。が、なぜかエラーが出てうまくいかないのです・・・。
下記の構文ではエラーが出なかったんですけどね~。
Sub テキストボックス変換2()
Dim sp As Shape
For Each sp In ActiveDocument.Shapes
If sp.Type = msoTextBox Then
sp.ConvertToFrame
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Frontpage Expressでスペースキ...
-
投資に詳しい方に質問です。 こ...
-
MCIデバイスがありません
-
エラーでインストールに毎回失...
-
このソフトって消してもいいん...
-
agent.exe ってなんですか?
-
ウイルスでしょうか?
-
ウイルスセキュリティが入って...
-
音声編集の左右バランスについて
-
realtek HD audioに変更したい
-
Windows 95/98対応ソフトをXPで...
-
ウインドウズアップデート エラ...
-
インストール時などに英語表記...
-
突然の「Windowsラインセンス認...
-
リカバリーディスクもないまま...
-
セキュリティソフトのアンイン...
-
ネットカフェで
-
PowerDVD12でBlu-rayが見れなく...
-
外付けHDDにofficeをインストー...
-
PCを人に預けます。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
円でオルガンやsp500を持ってい...
-
投資に詳しい方に質問です。 こ...
-
エクセルで、最背面に移動と塗...
-
バフェットはなんでsp500は買っ...
-
xp-sp1からxp-sp2へのupについて
-
インストールが出来なくて困っ...
-
このソフトって消してもいいん...
-
PowerDVD12でBlu-rayが見れなく...
-
リカバリーディスクもないまま...
-
MP3Gain 音量を変更しても…
-
アドクリーナーについてお伺い...
-
MMDのAVI出力に関して
-
Windows10で画像のスライドショ...
-
Windows Updateが動作しません
-
zoom pc版のインストールが出来...
-
エラーでインストールに毎回失...
-
ノートパソコンのスピーカーか...
-
agent.exe ってなんですか?
-
DELLの再インストールCDで他社...
-
インターネットカフェのパソコ...
おすすめ情報