Word VBA質問箱 IV

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

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


46 / 306 ツリー ←次へ | 前へ→

【548】Wordに挿入したExcelシート内のデータの取得 とき 07/12/13(木) 13:56 質問[未読]
【549】Re:Wordに挿入したExcelシート内のデータの取得 とき 07/12/24(月) 9:04 発言[未読]
【757】Re:Wordに挿入したExcelシート内のデータの取得 マナ 13/5/8(水) 21:10 発言[未読]
【758】Re:Wordに挿入したExcelシート内のデータの取得 マナ 13/5/12(日) 11:34 発言[未読]
【759】Re:Wordに挿入したExcelシート内のデータの取得 マナ 13/5/14(火) 19:52 発言[未読]

【548】Wordに挿入したExcelシート内のデータの取得
質問  とき  - 07/12/13(木) 13:56 -

引用なし
パスワード
   1.Wordで『Excelシートの挿入』ボタンでExcelシートを挿入後、WordVBAでExcelシートのセルのデータを取得する方法を教えて下さい。
2.WordVBAでExcelシートのセルにデータを入力する方法はあるのでしょうか。
以上よろしくお願い」します。

【549】Re:Wordに挿入したExcelシート内のデータの取得
発言  とき  - 07/12/24(月) 9:04 -

引用なし
パスワード
   結局、WordVBAでExcelシートのセルのデータを取得することはできそうもないようです。
別の方法でマクロを組みます。(予めExcelシートにデータを書いておき、WordからExcelを起動させてWordVBAでExcelシートにアクセスします。)
この質問は今回で終わりにします。

【757】Re:Wordに挿入したExcelシート内のデータの取得
発言  マナ  - 13/5/8(水) 21:10 -

引用なし
パスワード
   >結局、WordVBAでExcelシートのセルのデータを取得することはできそうもないようです。

ちょっと調べながらやってみました。こんな感じできそうです。

>1.Wordで『Excelシートの挿入』ボタンでExcelシートを挿入後、WordVBAでExcelシートのセルのデータを取得する方法を教えて下さい。
>2.WordVBAでExcelシートのセルにデータを入力する方法はあるのでしょうか。
>以上よろしくお願い」します。。
Sub test() '挿入したエクセルを選択して実行
  Dim myOle As Word.OLEFormat
  Dim xlApp As Excel.Application
  Dim myStr As String

  With Selection
    If .Type <> wdSelectionShape And _
      .Type <> wdSelectionInlineShape Then Exit Sub
    Select Case .Type
      Case wdSelectionShape
        If .ShapeRange(1).Type <> msoEmbeddedOLEObject Then Exit Sub
        Set myOle = .ShapeRange(1).OLEFormat
      Case wdSelectionInlineShape
        If .InlineShapes(1).Type <> wdInlineShapeEmbeddedOLEObject Then Exit Sub
        Set myOle = .InlineShapes(1).OLEFormat
    End Select
  End With
  
  With myOle
    If Not .ClassType Like "Excel.Sheet*" Then Exit Sub
    .DoVerb VerbIndex:=wdOLEVerbOpen
    With .Object
      Set xlApp = .Application
      myStr = .Sheets("Sheet1").Range("A1").Value '★Excelシートのセルのデータを取得
      .Sheets("Sheet1").Range("A1").Value = "test入力" '★Excelシートのセルにデータを入力
      .Close
      xlApp.Quit
    End With
  End With
  
  MsgBox myStr
  
  Set xlApp = Nothing

End Sub

【758】Re:Wordに挿入したExcelシート内のデータの取得
発言  マナ  - 13/5/12(日) 11:34 -

引用なし
パスワード
   本題とは違いますが。わからないことがります。

>1.Wordで『Excelシートの挿入』ボタンでExcelシートを挿入後、

この部分もVBAでと、試してみました。こんな感じです。
しかし、★の行でエラーになります。

実行時エラー1004
WorkbookクラスのCloseメソッドが失敗しました

調べてみたら、SendKeysを使っている例がありました。
これで、うまくいくときもあります。
ですが何回か実行すると、エクセル編集画面が開いたままで
ワード編集画面にもどってくれないときがあります。
どうしたらいいのでしょう?

Sub test()
  Dim myOle As OLEFormat
  Dim myStr As String

  Set myOle = ActiveDocument.Shapes.AddOLEObject(ClassType:="Excel.Sheet").OLEFormat
  
  With myOle.Object
      .Sheets("Sheet1").Range("A1").Value = "test入力"
      myStr = .Sheets("Sheet1").Range("A1").Value
'      .Close   '★ここでエラー
      SendKeys "{ESC}", True
      .Application.Quit
  End With
  
  MsgBox myStr

End Sub

【759】Re:Wordに挿入したExcelシート内のデータの取得
発言  マナ  - 13/5/14(火) 19:52 -

引用なし
パスワード
   あちこち探しまわったら、こんなのがありました。

Modify embedded Excel workbook in Word document via VBA
ht tp://stackoverflow.com/questions/483813/modify-embedded-excel-workbook-in-word-document-via-vba

>With Selection.Find
>  .ClearFormatting
>  .Text = "wiffleball"
>  .Execute Forward:=True
>End With

最後のコメント
>this problem was driving me crazy
その気持よくわかりました。

あと、こんなのも。

『MS word2003』でグラフを作成するVBAマクロの作成例
ht tp://bloodyrosary.blog8.fc2.com/blog-entry-1351.html

確かにConvertToShapeとかConvertToInlineShapeでうまくいきました。

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