- ベストアンサー
エクセルVBAで次のような式の作成は可能でしょうか
エクセルでセルの値を取得する時に Range("B2")=Range("A1") のように式を作成しますが 上のような形式で、(「Copy」&「Paste」を使用しない式で) ワード文書の一行目の文字列をエクセルのセルに取得出来るでしょうか 例) Range("B2")=『Bunsyo.doc,一行目の文字』 (又は、最初の表のRange("A1")の文字)のような感じで取得したいのですが Office製品同士でもこのような式は作成できないのでしょうか。 なにか方法がありましたら教えていただきたいのです、どうかよろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
簡易的に1行目だけを取り出すなら、#1さんの回答を参考に書いてみると、 Sub test() Dim wdapp As Object Set wdapp = CreateObject("word.Application") wdapp.documents.Open Filename:=ThisWorkbook.Path & "\" & "okwebtest.doc" wkwdth = wdapp.activedocument.PageSetup.charsline Range("A1").Value = wdapp.activedocument.Range(Start:=0, End:=wkwdth) wdapp.Application.Quit Set wdapp = Nothing End Sub とかでもいいかもしれません。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
さあ良い回答が上がるでしょうか。私も興味があります。WordVBAのことを良くご存知の方は世の中におられると思いますが、OKWEBを見ておられる層の人におられるかどうか。過去の質問や回答も極く少ないように思います。解説書も2-3冊旧いのを知ってますが、新旧とも殆ど大型書店でもみかけません。WEBでも断片的なものが多いです。今後勉強されるには、苦難の道が待っているかも知れません。私見では米国での本でも探さないとないかもしれない。 それとエクセルやアクセスのようなセルやレコード・フィールドなどと匹敵する概念がワードではあるのかどうか。 一応paragraphsが最小単位のようです。 ビジネスなどで、WORD->EXCELのケースがあまり考えられないこともあると思います。 下記をエクセルVBAのVBE画面に貼りつけ実行して見てください。 Filename:="OKWEB回答.doc"を適当なワード文書に置換えて下さい。 Sub test01() Dim wdapp As Object Set wdapp = CreateObject("word.Application") wdapp.Documents.Open Filename:="OKWEB回答.doc" i = 1 Set 段落 = wdapp.Documents(1).paragraphs(1) Cells(i, 1) = 段落 For i = 1 To 30 Set 段落 = 段落.Next If Err <> 0 Then GoTo 終了 End If Cells(i, 1) = 段落 Next i 終了: Set wdapp = Nothing End Sub これとて何に使えるのと言う代物ですが、質問のムードの 答えにはなっているかもしれません。
補足
早速のレス有難うございます "OKWEB回答.doc"のファイル名にバス名を入れ "C:\OKWEB回答.doc"のように書き直して実現しました このコードがどのように動作しているのか検証してみます >過去の質問や回答も極く少ないように思います 本当に仰る通りです、私も過去スレを検索したのですがなかなかありませんでした もうしばらく他の方法のレスがあるかも知れないので待ちたいと思います 有難うございました