• 締切済み

WORDのアドイン

先日、以下のように教えて頂き試したのです、できませんでした。 ご回答が頂けないので再投稿をしました。 教えて下さい。 ------------------------------------------------ お世話になっております。 QNo.4228197で質問させて頂きました。 その節はありがとうございました。 WORDでも同様な事をやりたいのです。 ドキュメントを開いた際のイベントは、 Dim WithEvents oWord as Word.Application Private Sub oWorf_DocumentOpen(ByVal Doc As Word.Document) end sub でいいのでしょうか?? ------------------------------------------------------------ やり方は同じですよ IDTExtensibility2_OnStartupCompleteイベントの最後の方で if oHostApp.Name = "Microsoft Word" then   Set oWord = oHostApp End if IDTExtensibility2_OnBeginShutdownの最後に Set oWord = Nothing を追加 Private Sub oWord_DocumentOpen(ByVal Doc As Word.Document)   If oWord.Documents(1).CustomDocumentProperties.Count Then     MsgBox oWord.Documents(1).CustomDocumentProperties("文書番号").Value   End If end sub といった具合です ------------------------------------------------------------------- 下記のようにしてテストしてみたのですが、うまく行きません。 宣言部 Dim WithEvents objWord As Word.Application IDTExtensibility2_OnConnectionイベント Set objWord = objHostApp IDTExtensibility2_OnBeginShutdownイベント Set objWord = Nothing Private Sub objWord_DocumentOpen(ByVal Doc As Word.Document) MsgBox "word Open" End Sub Private Sub objWord_DocumentActivate(ByVal Doc As Word.Document) MsgBox "word Activate" End Sub どこか違うのでしょうか。 宜しくお願い致します。 ----------------------------------------------------------------

みんなの回答

  • id357
  • ベストアンサー率29% (39/133)
回答No.1

相当詳しい方だとはお見受けしますが。 多分、みなさん、最終目的が見えないから 返答のしようがないんではないでしょうか?

takao0429
質問者

お礼

ご指摘ありがとうございます。 そうですね、これでは何をしたいのかが分かりにくいですね。 最終目的は「objWord_DocumentOpen」イベント、「objWord_DocumentActivate」イベントを取りたいのです。 もしくは、ヒントになるようなサイトを教えて下さい。 よろしくお願い致します。

関連するQ&A

  • WORDのアドイン

    お世話になっております。 QNo.4228197で質問させて頂きました。 その節はありがとうございました。 WORDでも同様な事をやりたいのです。 ドキュメントを開いた際のイベントは、 Dim WithEvents oWord as Word.Application Private Sub oWorf_DocumentOpen(ByVal Doc As Word.Document) end sub でいいのでしょうか??

  • excel  VBA ワード文書テンプレートに転送

    下記のコードを作成したのですがうまくいきません指導願います Sub () Dim wd As Word.Application Dim WDoc As Word.Document res = MsgBox("?", vbYesNo) If res = vbYes Then nissi = "C:\Documents and Settings\○○ \デスクトップ\文書1.doc" Else nissi = "C:\Documents and Settings\○○ \デスクトップ\文書2.doc" End If Set wd = CreateObject("Word.Application.11") wd.Visible = True Set WDoc = wd.Documents. _ Open(nissi) With WDoc.Tables(1) Set crange = Sheets("aq").Cells(1, 1) WDoc.Tables(1).Cell(1, 2).Range.Text = crange If Sheets("aq").Range("d2") = "D" Then 中略 end With wd.Quit Set wd = Nothing Set WDoc = Nothing End Sub

  • Word起動方法

    Visual Basic6についての質問です。 現在次のようなPGを組んでいます。 Sub NewWord() Dim mswApp As Object 'Word.Application Dim mswDoc As Object 'Word.Document 'ワードを取得か生成する Set mswApp = GetWord 'ドキュメントを追加 Set mswDoc = mswApp.Documents.Add '名前を付けて保存 mswDoc.SaveAs "C:\abc.doc" End Sub Private Function GetWord() As Object '起動中のワードを捕まえる On Error Resume Next Set GetWord = GetObject(, "Word.Application") On Error GoTo 0 '捕まえる事ができなかったら、新規に起動する If (GetWord Is Nothing) Then Set GetWord = CreateObject("Word.Application") '生成時は、非表示で起動するので、表示する GetWord.Visible = True End If End Function 上記を実行すると、開いている文書に同じ名前を指定することはできません。保存する文書に異なる名前をつけてください。というエラーがでてきます。 開いている文書とはなんのことでしょか?VBの他にアプリケーションは起動していません。名前を変更(abc.docのとこですよね?)してもエラーはでます・・・。 なにがいけないのでしょうか。教えてください><

  • VBA シートプログラムでRangeエラー

    いつもお世話になっております。 Excel2003を使用しております。 シートに直接プログラムを書いています。 (例として、Sheet1とします) シートの内容が変わったときに、色々プログラムを実行していこうと思っているのですが、 Private Sub Worksheet_Change(ByVal Target As Range) のTargetが上手く取得できていない気がします。 今までは上手く動いていたのですが、 急にTargetの値に数値(セルに入力した値)が入ってしまうようになり 上手く組めなくて困っています。 Private Sub Worksheet_Change(ByVal Target As Range) Dim 開始1 As Range Dim 終了1 As Range Dim 開始2 As Range Dim 終了2 As Range Set 開始1 = Range("D5:D63") Set 終了1 = Range("E5:E63") Set 開始2 = Range("F5:F63") Set 終了2 = Range("G5:G63") If ThisWorkbook.ActiveSheet.ProtectContents Then '保護かかってたら End '強制終了 End If If Not Application.Intersect(Target, 開始1) Or Application.Intersect(Target, 実績日開始2) Is Nothing Then Call 開始(Target, 開始1, 開始2) ElseIf Not Application.Intersect(Target, 終了1) Or Application.Intersect(Target, 終了2) Is Nothing Then Msgbox "テスト!" End If End Sub '----------------------------------------------- Sub 開始(ByVal Target As Range, 開始1 As Range, 開始2 As Range) If Not Application.Intersect(Target, 開始1) Is Nothing Then MsgBox Target.Row End If If Not Application.Intersect(Target, 開始2) Is Nothing Then MsgBox Target.Row + 1 End If End Sub 全部シートに書いています。 まだ、テスト段階のため適当なプログラムしか書いておりません。 (指定範囲が変更された場合に、Msgboxを出したりなど 単純なことしかしていません) どこが悪いのか、教えて頂けないでしょうか? よろしくお願い致します。

  • VB6.0でPowerPoint上のイベントを取得したい

    VB6.0からPowerPointのファイルを開き、 PowerPoint上のイベントを取得したいのですが、 方法が分からず困っております。 具体的には、ツールバーのプレビューボタンが クリックされたことをVBで検知したいと考えています。 現状では下記のように、Applicationの閉じるイベントは 取得できたのですが、そこからどうして良いか分からない状態です。 良きアドバイスをお願い致します。 ---------------------------------------------------- Option Explicit Private WithEvents PPTApp As PowerPoint.Application '■パワポを開く Private Sub Command1_Click() Set PPTApp = New PowerPoint.Application PPTApp.Visible = True PPTApp.Presentations.Open (App.Path & "\test.ppt") End Sub '■パワポを閉じる Private Sub Command2_Click() PPTApp.Quit Set PPTApp = Nothing End Sub '■閉じるイベントを取得 Private Sub PPTApp_PresentationClose(ByVal Pres As PowerPoint.Presentation) MsgBox "閉じる" End Sub ----------------------------------------------------

  • エクセル デバッグできるのとできないのがある

    シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。

  • Excel VBA 動的に作成したチェックボックスにイベントを追加したい

    http://oshiete1.goo.ne.jp/qa504573.html を参考にしたのですがエラーが出ます。 ------標準モジュール------- Dim NewChkBox As New Class1 Sub main() Dim oObj As OLEObject Set oObj = ActiveSheet.OLEObjects.Add(classtype:="forms.checkbox.1") oObj.Top = 10 oObj.Left = 10 NewChkBox.cb = oObj Set oObj = Nothing End Sub ---------クラスモジュール-------- Public WithEvents cb As Checkbox Private Sub cb_Click() MsgBox "You clicked the checkbox." End Sub 実行すると、 「オブジェクトはオートメーションイベントを発生させることができません。」 というエラーメッセージが出ます。 OLEObjectで作成したコントロールに イベントを追加するにはどのようにしたら良いのでしょうか?

  • 現在開いている全てのIEのURLのタイトルを取得し

    現在開いている全てのIEのURLのタイトルを取得したいのですが Sub test() Dim shl As Object Dim wnd As Object Dim doc As Object Dim frg As Boolean Set shl = CreateObject("Shell.Application") For Each wnd In shl.Windows() If TypeName(wnd.Document) = "HTMLDocument" Then Set doc = wnd.Document Debug.Print doc.Title Set doc = Nothing End If Next Set shl = Nothing End Sub このコードが If TypeName(wnd.Document) = "HTMLDocument" Then でエラーになる時とならない時があります。 エラーになる時は、 実行時エラー -2147467259 ’Document’メソッドは失敗しました:'IWebBrowser2'オブジェクト となります。 エラーが発生する時としない時の違いが分かりません。 そもそもどういう意味のエラーでしょうか? IE11、オフィス2010です。

  • vbaのイベントについて質問

    vbaでマクロを組んでおります。 mouseupイベント、GetChartElementをもちいて散布図の中のグラフ要素の値を取得したいのですが、 これらのコマンドはグラフシートにしか適用できないでしょうか?グラフシートではうまくいくのですが埋め込みグラフに対して行うとうまくいきません。分かる方いらっしゃいましたら、お願いいたします。 クラスモジュールClass1にて↓ Public WithEvents myChart As Chart Private Sub myChart_MouseUp _ (ByVal Button As Long, _ ByVal Shift As Long, _ ByVal x As Long, _ ByVal y As Long) Dim ElemID As Long, Arg1 As Long, Arg2 As Long myChart.GetChartElement x, y, ElemID, Arg1, Arg2 Select Case ElemID Case xlSeries MsgBox ("データ系列") '⇒データ系列と認識されればメッセージボックスがでるはず Case Else MsgBox ("その他") End Select End Sub 標準モジュールに入力↓ Dim myClass As New Class1 Sub InitializeChart() Set myClass.myChart = ActiveChart End Sub

  • ACCESS VBA を勉強中のものです。

    勉強のため購入した本(※VBA逆引き大全)からサンプルがダウンロードできたので,下記の構文で実行したところ,フォーム上の会社名を,Wordに「~様」と挿入することができました。 Private Sub cmd実行_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String Dim stName As String stName = Me.txt会社名 stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection .Find.Text = "様" .Find.Execute .InsertBefore stName .Font.Size = 12 .Font.Bold = True End With Set Appwo = Nothing Set doc = Nothing End Sub ここで質問なのですが,フォーム上には会社名に加え,そのほかにもWordへと挿入したいテキストボックス(※部署名,担当者名など)が複数存在します。そのような場合には,上記の構文はどのようにすればよいのでしょうか。 教えていただければ幸いです。 初心者で言葉足らずかも知れませんが、よろしくお願いします。

専門家に質問してみよう