VBScripts→Word2010TextBoxの問題について

このQ&Aのポイント
  • VBScriptでWord2010のテキストボックスの問題について調査中です。
  • Word2010のテキストボックスは特殊な図形形式になっているため、VBScriptで正しく抽出できません。
  • VBScriptでShapeのTypeの値を調べる方法を教えていただきたいです。
回答を見る
  • ベストアンサー

VBScripts→Word2010TextBox

また、教えて頂きたいことがあります。 私は「VBScript」の超初心者なのですが、仕事でクライアントからお預かりしたWordファイル内のテキストを利用することがよくあるのですが、単にテキスト保存しただけでは、テキストボックスなどに入力された文字が書き出せません。 そこで「VBScript」でテキストボックスとオートシェープ内の文字列も書き出すプログラムを作りました。 しかしこのプログラムでは「Word97-2003」形式の「.doc」ファイルと「.rtf」ファイルは問題なく動作しているのですが、「Word2010」(.docx)ではテキストボックスなどの文字を抽出できません。 「VBScript」で「テキストボックス」は「Type = 17」、「AutoShape」は「Type = 1」だ、ということは分かっているのですが、「Word2010」で「テキストボックスの挿入」を行うと、自動的に何かの図形形式になってしまいます。 「Word2010」で「Word2003」などで作成した「.doc」ファイルを開き、その中の「テキストボックス」をクリックすると、メニューリボンに「テキストボックスツール」があらわれ、それがテキストボックスであると分かります。 しかし、「Word2010」で「テキストボックスの挿入」を行うと、「テキストボックスツール」ではなく、「描画ツール」がメニューリボンにあらわれます。 そこで私が知りたいのは、この「Word2010(.docx)」形式での「テキストボックス」とは何者なのか、ということと、「VBScript」での「Type =」の値を教えて頂きたいのです。 大変失礼ではありますが、「VBAではこうだからこうだろう」というのは、すみません、答えて頂かなくて結構です。 前回質問したときも、「VBA」で回答して下さった方がおられたのですが、申し訳ないのですが、私の役には立ちませんでした。 あくまで「VBScript」限定でお願い致します。 また、大変厚かましいのですが、これから先、このような問題が出てきたことを考えると、その「Shape」が何者であるかを調べる方法と、その「Shape」の「Type」の値を調べる方法を教えて頂ければ、私の学習上も、一番ありがたいです。 以上、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

VBScriptは、いろいろなことができますが、その機能がすべてVBScriptに組み込まれているわけではあれません。 決められた方法で、アプリケーション等を操作する方法を公開しておくと、VBScript等がその方法を使って操作できるようになっているだけです。 WordのShapeオブジェクトのTypeとか、前回の質問のSaveAsとかは、Wordがほかのプログラムから操作できるように公開しているもので、VBScriptはそれを利用しているだけです。(このような仕組みを、オブジェクトモデルといっています。) そのため、VBScriptは変わらなくても、Wordのバージョンが上がれば、新しい機能をVBScriptから操作できたりします(逆に、今回のように今までと操作方法が変わってしまって、うまく動作しなくなることもあります)。 なので、VBScriptでSaveAsの情報を調べても、出てこないわけです。どんな命令があって、その命令にどんな値をわたすとどのように動作するかといったことは、VBScriptが決めているのではなく、オブジェクトモデル(今回であればWord)が決めているので、そのオブジェクトモデルの決まりを調べる必要があります。 基本はWordの決まりに従うことになるので、VBScriptでの方法とか、VBAでの方法とかにこだわらない方がいいと思いますよ。VBAでどう記述するかを見れば、ドキュメントモデルとしての操作方法はわかるはずなので、あとはそれをVBScriptで実現するだけです。VBAでの記述例が圧倒的に多いので、大抵の人はVBAでの記述をVBScriptに変換しているので、それができるようになった方がプログラミングの幅が広がるはずです。 テキストボックスが何として扱われているかですが、テキストボックス1つだけのファイルを作成して、そのファイルをVBScriptで調べてみてはどうでしょうか。ActiveDocumentのShapesコレクションに1つだけオブジェクトがあるでしょうから、それのTypeが何かを表示させるなりすれば、わかるように思います。

Prome_Lin
質問者

お礼

大変ありがとうございます。 もちろん、「VBScript」ですべて出来るとは全く思っていません。 第一、ファイルを扱うのに「CreateObject」を呼び出したりしていて、それが「VBScript」に含まれた機能でないことは理解しています。 私が「VBScript」限定で、とお願いしているのは、「VBAではwd…」だ、とか言われても、「VBScript」ではその「wd…」をそのまま使えず、その値が無いとダメなのです(私はその「値」を知りたいのです)。 「VBA」と「VBScript」では違うところもあるので、私としては「VBScript」をまずある程度理解したい、と思い、「VBScript」から学習を始めました。 と言いますのは、私は印刷屋さんの下請けの下請けのような仕事をしておりまして、クライアントからお預かりしたデータを使って、別ソフトで組み直すようなことをよくやります。 その場合、外部から一括して処理が出来、しかも「正規表現」が使える「VBScript」こそが、私のしたいことを実現してくれるからです。 Excelのデータ集計をする、とか、「VBA」でそれなりに複雑な処理をする必要が私には全く無く(そんなの印刷屋さんの仕事ではないので)、今回も「Word2010」の「テキストボックス」がだいたい、何なのか、それを「VBScript」から操作するのに必要な「Type」の値をとりあえずは知りたいだけなのです。 最後にご指摘頂いたやり方すら、私にはすぐには分からない「超初心者」なものですから、できましたら、具体的なやり方(プログラム)を教えて頂けないでしょうか? 皆様にいろいろ教えて頂き大変ありがたいのですが、なにぶん、もうすぐ57歳の初老の人間にとっては、理解がなかなか出来ない事ばかりなもので、よろしくお願い致します。

Prome_Lin
質問者

補足

ありがとうございます。 今、私の実力ではなかなかうまく行きませんでしたが、何とかご指摘のやり方で「Type」の数値を取得できました。 「Word2010」で「テキストボックス」は何らかの「描画オブジェクト」になるのですが、「AutoShape」と同じ「Type = 17」でした。 もちろん、私のプログラムでも「Type = 17」の場合も文字を取り出すようになっているのですが、「Word2010」では取り出すことができませんでした。 また、全く違う問題みたいです。 「Word97-2003」形式の「.doc」では、例えば「AutoShape」の楕円の中の文字もちゃんと「Type = 17」で認識し、その中の文字を取り出せているのですが…。 もう少し、勉強して、また分からなかったら、お教えください。 以上、ありがとうございました。

その他の回答 (4)

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.5

>・・力がないから、お伺いしているのです。 私を含め、そのような事を指摘する場合、本人に(質問者)、その努力がうかがえないと そのような発言をします。単純に単語一個で検索すれば分かるような事を、わざわざここで投稿する。 やっている事の、その行動がわからない。病的にしかみえないのです。 > 私の考えとしましては、回答者は、その人の力(程度・能力)に合わせて回答すべきではないでしょうか 何を甘えているのでしょうか? 私はあなたの親でもなければ、友達でもない。まして、投稿してお金をもらってもいない。 何をどう投稿するのかは、あなたにも自由があるのと同じで、 回答者にも自由があります。 「努力がみられない」といいましたが、 >、「VBAではこうだからこうだろう」というのは と言う発言です。その箇所を見ていないので、創造でしかありませんが、 Wordオブジェクト又はOfficeオブジェクト、モデルを提示して、そのプロパティーの・・なんて説明したかと思います。 No1,2,3に記載しましたが、ちゃんと勉強して知識を深めていけば、VBAを提示したのではなく、 オブジェクトモデルのメンバー を提示したことがわかるはずです。VBAではないのです。 VBSはオブジェクト指向のスクリプトプログラム言語で、COMインターフェースを提供するモジュールを操作できるのが、もっとも良いところです。 通常この手のスクリプト言語だと、その提供している会社の提供している物しか内部で使えない場合が多いが、 COM と言うやり方を公開し、そのやり方に従えば、だれでも作れて、だれでも VBSと言う言語の書式で扱うことができる。こんな、すばらしい事は、それまでなかったのです。 それらを理解してくれていれば、 >このような問題が出てきたことを考えると、その「Shape」が何者であるかを調べる方法と をちゃんと提示したはずなのに、「素人にわかりやすいように説明しろ」というのは、投稿の目的が最初から違うところにあるとしか思えません。 No1で示したように、 VBA Officeオブジェクトモデル Wordオブジェクトモデル を読みましたか? そこのメンバーの詳細(リファレンス)を見れば、何を指定するか出てきます。 それでもわからないのなら、そのメンバーの単語でネットで検索すると、使い方を説明しているサイトや、サンプルコードがたくさんヒットします。 それさえ、やっていなくて、子供みたいに、だだこねているだけですよね。 それらをやって、努力している本物の質問者も多数います。投稿内容を見ると、少しづつ進歩しているのがわかります。 「愚問」投稿など、最初から議論を吹っかける集団などが、真の質問者の投稿をじゃましているわけです。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.3

No1,2を理解した上で、これを見ること http://msdn.microsoft.com/en-us/library/ff836759.aspx セレクションオブジェクトですね。何がいいたいか、No1、2を理解してくれていれば、わかるはずなんですが。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

No1の続き。 ちなみに、マイクロソフトの自動翻訳システムで翻訳したら http://www.microsofttranslator.com/BV.aspx?ref=IE8Activity&a=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fff196943.aspx ですね。 http://msdn.microsoft.com/en-us/library/ff196943.aspx 元です。 http://msdn.microsoft.com/en-us/library/ff846415.aspx ここにない、メソッド、プロパティー、メンバーは使えないと言う事です。ちゃーんとヘルプにありますよ。見ていないのでしょうか。 再度ちなみに抜粋です。 「オートシェイプ、フリー フォームなどの描画レイヤー内のオブジェクト、OLE オブジェクト、ActiveX コントロール、または画像を表します。Shapeオブジェクトは、文書のメイン ストーリーまたはすべてのヘッダーとフッター、ドキュメントのすべての図形を含むShapesコレクションのメンバーです。」 さすが自社のリファレンスサイトですね。90%以上ヘルプと似たことになっています????

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

>前回質問したときも、「VBA」で回答して下さった方がおられたのですが だとしたら、レスはつきませんね。それは、あなたがVBSの方も理解していないからです。 VBAはOfficeのインタープリターとしての言語です。Officeのオブジェクトモデルにアクセスするための、書式と言い換えてもいいのです。 VBSからアクセスできるのはVBAではなく、MS-Officeのオブジェクトモデルで、COMとしてOfficeから提供しているもので、VBSからのアクセスは、同じようにアクセスできるわけではありません。COMとして公開されている部分のみです。 つまり、Officeのヘルプにちゃーんとそのモデルが解説されているので、それを見ればアクセス方法が記載されています。それをVBSからアクセスするには、どのような書式にすればいいか聞けばいいだけです。 質問が適当でないから、回答も適切なものがえられません。回答者が正しくても、それをVBSに置き換えるだけの、あなたの力がないから、解釈できないだけです。 たまに、「オブジェクト指向はクラス作成だ」なんて間違いえた考え方を投稿する方がいますが、まさに、今回のような問題が、「オブジェクト指向」の問題です。 >Shape」が何者であるかを調べる方法と、 上記のように、MS-Officeについているヘルプをみればいいだけです。VBAのヘルプではありませんよ。 http://msdn.microsoft.com/ja-jp/library/kw65a0we.aspx のような物がのっている箇所です。 http://msdn.microsoft.com/ja-jp/library/ee814735.aspx を見てVBAとはなんぞや、から始まって、Officeのオブジェクトモデル、Wordのオブジェクトモデルを理解した上で、VBSからのCOMアクセスを勉強してください(ActiveXの操作といってもいい)。 これらはHTMLのDOM(ドキュメントオブジェクトモデル)のアクセスに良く似ています。 しかし、この投稿も以前、同じ物をみました。投稿者は進化していないということでしょう。同じ内容でしたが・・・・ http://msdn.microsoft.com/en-us/library/ff841698.aspx (正確にはこちら。日本語は未完成のようです。日本語でモデルを理解した上でたどれば5分とかからずにたどりつきます) なお、VBSからは特殊な方法でアクセスすることがありますので、また提供もされていない時があります。その場合は、逆転の発想をしないと。RUNでWordのマクロを実行する方法。

Prome_Lin
質問者

お礼

いろいろ説明頂きありがとうございます。 私は最初に「超初心者」だと、お断りしていますように、まだ、分かっていないことがだらけです。 こんなことを言っては失礼ですが、「超初心者」だと断っている人間に対して「力がないから」と言われても、困惑してしまいます。 力がないから、お伺いしているのです。 私の考えとしましては、回答者は、その人の力(程度・能力)に合わせて回答すべきではないでしょうか? それが出来ないのであれば、回答して頂かなくても結構なのですが。 回答して頂いて申し訳ないのですが、また、よろしくお願い致します。

Prome_Lin
質問者

補足

私は、「VBA」にアクセスすることは一切考えていません。 私の組んだプログラムでも、「VBA」を呼び出すようなことは一切していないつもりです。 従って、ご指摘の「VBSからアクセスできるのはVBAではなく、MS-Officeのオブジェクトモデル」と言われても、元々「VBA」にアクセスするつもりが無いので、意味が分かりません。 私が知りたいのは、単に「Word2010」で「テキストボックス」を挿入したとき、その「テキストボックス」を「VBScript」から指定するとき、「Type」がとる値を知りたいだけです。

関連するQ&A

  • Word2013での図の形式での貼り付け

    Word2007で作成したテキストボックスや図(イラスト)が6~7個入った文章があります。(ファイル形式docx) この文章Word2013で全文を図にしたく、全文を選択してコピーとして、白紙に形式を選択して貼り付けで図(メタファイル)で貼り付けると、この中の2~3のテキストボックスが文章からはみ出たように移動して貼り付きます。 同様の操作をWord2007で行うと原文と同じレイアウトで図として貼り付きます。 Word2013でテキストボックスが移動しないように、図として貼り付ける方法はありませんでしょうか?

  • docとdocxファイルの違いを教えてください。

    docはword2003まで使われていたファイル形式で docxは2007以降で使われているファイル形式です。 docで作成したファイルをdocxとして保存するとファイルサイズが若干小さくなりますが、 docと比べてdocxで保存した場合の利点を教えてください。 意外と検索してもほとんど説明してあるページが見つからなかったので 教えてください。 できれば、xlsとxlsxやpptとpptxの違いについて解説してあるページとかあれば教えてください。

  • エクセルで書いた図をワードに貼り付ける

    エクセルのオートシェイプとテキストボックスを使って、図を描き、その図をワードに貼り付けると、うまく表示されません。 テキストボックスの文字が消える。 テキストボックスの文字の色が黒くなる。 どうすれば解決できるのでしょうか? 2000を使っています。

  • word2010 クイックアクセスツールバー

    word2010のクイックアクセスツールバーについて教えてください。 以前のバージョン2007で,古いバージョンのwordファイルを開いた場合, 「互換モード(.doc)」として文書が開かれます。 その文書を,2007(.docx)に変換するコマンドをクイックアクセスツールバーに 配置することが来ましたが,2010ではそのコマンドが見つかりません。 リボンの「ファイル」→「情報」→「変換」を一回でできる クイックアクセスツールバーのコマンドがあれば どなたかわかる方教えてください。 よろしくお願いします。

  • WORD2000でのマクロ

    WORD2000を使っています。 オートシェイプのリボンを描き、その中に文字を入れるマクロを作りたいのですが、 マクロ記録中は、マウスでドラッグなどは効かないですよね。 どうやって作ったらいいのか困っています。 VBAの言語は理解しかねますので、 出来れば、言語でなく、操作でのやり方を教えて下さい。 宜しくお願い致します。

  • WordファイルをHTML形式に変更するときの図形について

    urizakaです。 さて、現在Wordで作ったファイルをHTMLのファイルに変換している(方法は、名前を付けて保存で保存する際に、保存の形式をwebファイルに変えるだけです)のですが、その変更を行うと、Wordのオートシェイプのオブジェクトとテキストボックスを組み合わせて作った図に不具合が出てしまいます。  具体的な症状は、Word上でオートシェイプの図形の上から貼り付けた文字がHTMLに変換すると表示されないというものです。表示させるのにはInterNetExplorerを使っています。  すみませんが、この症状について対処方法をご存知の方がいらっしゃったら、教えてください。  宜しくお願いします。

  • Wordのdocへの変換

    作ったレポートがdocxだったようで、提出した先生に『ファイルが開けない』と返信が返ってきました。そこで名前をつけて保存のときにファイルの種類を「Word97-2003&6.0/95-RTF」にしました。 これでdocxをdocに変換することが出来たのでしょうか?自信がないので解答お願いします。

  • ワード テキストボックスの外側に文字を書きたい

    ワードを使って、テキストボックスとオートシェイプを使って、連絡網を作っているのですが、テキストボックスの外側の横の部分に文字を入れたいのですが、やり方が全くわかりません。 ワード初心者に近いです。わかりやすく教えていただけませんか?   □-□ このような感じにしたいと思っています   | ○班□

  • WORD, Excel2010が開かなくなりました

    IT初心者です、どうぞよろしくお願いします。 OSはWindows7を使用しています。 今まで、Word2010, Excel2010を使用していたのですが、 急に開かなくなってしまいました。 クリックすると、「このファイルを開けません:   このファイルを開くには、そのためのプログラムが必要です。インターネットで自動的にプログラムを検索するか、またはコンピューターにインストールされた一覧から手動で選択してください。」というメッセージがいつも出ます。その下のある「Webサービスを利用して正しいプログラムを探す」をチェックしてOKにすると、 Windowsのサポートぺージへ飛び、以下のように説明されました。 ファイルの種類: Word 2007 文書 拡張子: .docx 解説: この文書は WordprocessingML オープン XML 形式で保存された、Microsoft® Office Word 2007 の既定のファイル形式です。2007 Office Word、Excel および PowerPoint ファイル形式の Microsoft Office 互換機能パックがインストールされている場合は、Word 2000、2002 および 2003 でも編集可能です。Word Viewer 2007 を使ってファイルを開くこともできます。 ファイルを開くことができるソフトウェアの Web サイト: Microsoft Office Word 2003 and older with the Microsoft Office Compatibility Pack for 2007 Office file formats Microsoft Office Word 2007 Word Viewer 2007 適切な情報が見つからなかった場合には、インターネット上の検索サイトにてお探しのファイルの拡張子を指定して検索を実行してください。 例えば、"拡張子 xls" と検索ボックスに入力し、検索を実行します。 Word2007を使った覚えはありません(インストールさえしていません。) 一つ思い当たるのは、このPCにはKINGSOFT officeがインストールされていて、 最近よく「最新版にアップデートしてください」というポップアップが頻繁に出るので、面倒だからOKしたら、WordのアイコンがすべてKingsoftのアイコンに変わってしまいました。 あわててKingsoftをアンインストールしたら、もとのWordのアイコンに戻ったように見えたのですが、ここでおかしくなってしまったのでしょうか。 私はdoc形式と、docx形式と両方使用しています。ちなみに、docの方はすべて無事です。docxで新たにファイルを作って保存すると、すべて冒頭のようなメッセージが出て、開かなくなってしまいました。 とても困っています、どうぞアドバイスをお願いいたします。

  • Wordの図形を画像にできるでしょうか?

    Wordの図形を画像にできるでしょうか? Word内に小さなテキストボックスを作り、その中にオートシェイプや文字を使って 図形のようなものを描きます。 そして、このテキストボックスだけを 別のアプリケーションに貼り付けできる画像とすることはできるでしょうか? もし不可能でしたら (図形としては簡単なものです。)画像を作る一般的な ソフトウェアを教えてください。

専門家に質問してみよう