- ベストアンサー
エクセルVBAにてワード文章をコピー
下記の様なエクセルの管理表のA1セルをダブルクリックすると ファイル選択画面に移行し選択したワード文章の1行目から順に B1、C1、D1・・・へコピーさせたいと考えています。 A B C D・・・ 1______ 2______ 3______ ・ 以降、A2、A3・・・と同じ事を繰り返し別のワードファイルを コピーしていきたいです。ワードは最大20行程度となります。 いつも質問ばかりですみませんが、どうぞ宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>エクセルVBAにてワード WordVBAが先(主)に来るものだろう。 WordVBAは市販解説本も少なく、WEB記事も十分でなく 学習に苦労する。 回答をコピペして終りと考えるなら,心得違いと思う。 面倒でも、手作業で処理するほうがずっと早い。 ーー Word側のデータが、ワードで言う「表」の形式だけなら、話ははやいが。こちらのデータ例を挙げない質問者が多いが、常識を働かせて意図を推定できない。 ーー たまたま、WEB記事に、関連しそうなものを見つけたので 下記をやってみた(ただし途中まで)。 https://www.relief.jp/docs/word-vba-control-excel-sheets.html https://www.relief.jp/docs/word-vba-get-text-each-line.html ーー これをさらに質問者の言うケースに合せるコードを 組む力がないなら、あきらめること。 == 質問は、Wordの(文字)文書の1行、1行の全文を、 エクセルシートの横方向の1セルに、順次セットしたい という風に意味を採った。(何のためにこんなことをするのかという 疑問は消せないが) すると縦方向に、行を改めるのは、どういうタイミングなのか 判らない。質問に書いてなくて不完全だろう。 データの中身実例が書いてなくて、意図を推し量りにくいのだ。 根本的に小生が誤解しているのか、ともおもうが。 Wordで行というと、それなりの術語なのを、意識してないのではとも思う。 ーー テストするには、Wordの文書に、何か文字文章の記事を貼り付ける。 エクセルのブックで、白紙の「Book2.xlsx」という ブックを作って保存して閉じておく。 C:\Users\XXX\Documents\Book2.xlsxの部分をそれに 合わせて下記コードを修正すること。 WordのVBEの標準モジュールに Sub test03() Dim pg As Page Dim rc As Rectangle Dim ln As Line Set xl = CreateObject("excel.application") '--- 'Sub WordVBAからExcelシートを操作する() xl.Visible = True xl.Workbooks.Open ("C:\Users\XXX\Documents\Book2.xlsx") '--- i = 2: C = 1 With ActiveWindow .View.Type = wdPrintView For Each pg In .ActivePane.Pages For Each rc In pg.Rectangles For Each ln In rc.Lines If rc.RectangleType = wdTextRectangle Then ' MsgBox ln.Range.Text '--‐エクセルシートで、縦方向に、別行に、文書の各行部分の文字列を表示するなら 'xl.worksheets("Sheet1").Cells(i, "a") = ln.Range.Text 'i = i + 1 '----列方向のセルに順次表示してゆく場合 xl.worksheets("Sheet1").Cells(i, C) = ln.Range.Text C = C + 1 '--- End If Next ln Next rc Next pg End With Set xl = Nothing End Sub == Wordで言う「行」は、日本人は簡単によく使うが、あいまいなもので、(=フォントサイズの変更、1ページの文字数設定変更、少々の字句追加などで、変わるもので)、VBAでは、ActivePane.Pagesのオブジェクト中の話になるようだ。 こういうのもエクセルVBAなどの常識では、類推・推察では、分らないと思う。だから難しい。
お礼
ご親切にありがとうございます 参考にさせて頂き追ってお返事させて頂きます 宜しくお願い致します。