レイトバインドした際の「Word.WdInformation.~」の書き方が分かりません

このQ&Aのポイント
  • レイトバインドした際に「Word.WdInformation.~」の書き方がわからないという質問です。
  • VB2008+XP+Word2003の開発環境で、初めてレイトバインディングに取り組んでいます。
  • 具体的なコードの部分で、「Word.~」をどのように書くべきか分からない状況です。
回答を見る
  • ベストアンサー

レイトバインドした際の「Word.WdInformation.~」の書

レイトバインドした際の「Word.WdInformation.~」の書き方が分かりません。。。  こんばんは、質問させていただきます。どうぞよろしくお願いいたします。 開発環境:VB2008+XP+Word2003 でございます。  初めてレイトバインディングにトライいたしております。 例えば下のようなコードがあるといたします。  Dim myShape As Word.Shape = myShapes.Item(1)  Dim myAnc As Word.Range = myShape.Anchor Info = myAnc.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber) これをレイトバインディングいたします際、「Word.~」を すべて書き換えることになると思うのでございますが、  Dim myShape As Object = myShapes.Item(1)  Dim myAnc As Object = myShape.Anchor Info = myAnc.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)                ↑ここのWord.はどのように書くべきでございましょうか???  いろいろ検索したつもりでございますが、解決できません。。。 もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただけないでしょうか?  どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

遅延バンドで列挙体は参照できません。 ベタで書くなら Info = myAnc.Information(1) 可読性を意識するなら Const wdActiveEndAdjustedPageNumber as Integer = 1 Info = myAnc.Information(wdActiveEndAdjustedPageNumber)

参考URL:
http://msdn.microsoft.com/en-us/library/bb213848(office.12).aspx
linelan
質問者

お礼

 どうもありがとうございます!!! うまくいきました^^  アドバイスいただいた後、検索いたしまして http://www.geocities.jp/ikachi_soft/script/const/word2007const.txt できれいにまとめて下さっているのが見つかりましたので、 他にも同じような問題がありましたがすべて同じ要領でうまくいきました。 >可読性を意識するなら のやり方ですべて直しました。  この度は助かりました。ご親切にどうもありがとうございました!m(_ _)m

関連するQ&A

  • GridViewにバインドせずにデータを表示する方法

    環境:VS2008&VB.NET&ASP GridViewに手動でテーブルからデータを読みデータバインドせず DBの値を表示する方法を考えていますがうまくいかず困っています。 (データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。) 初心者のため見当違いなことをしているかもしれませんが それも含めまして質問させていただきます。 質問1 そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。 質問2 以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。 手順に不適格な箇所があるのでしょうか。 strSql = "SELECT * FROM Data_Table" Using connection As New SqlClient.SqlConnection(cnStr) Dim command As New SqlClient.SqlCommand(strSql, connection) connection.Open() Dim dr As SqlClient.SqlDataReader = command.ExecuteReader While (dr.Read = True) 'データあり str1 = dr("data1") str2 = dr("data2") str3 = dr("data3") End If connection.Close() Dim item1 As DataGridItem item1 = New DataGridItem(-1, -1, ListItemType.Item) Dim cell0 As TableCell = New TableCell item1.Cells.Add(cell0) Dim cell1 As TableCell = New TableCell item1.Cells.Add(cell1) Dim cell2 As TableCell = New TableCell item1.Cells.Add(cell2) Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) row1.Cells.Add(cell0) row1.Cells.Add(cell1) row1.Cells.Add(cell2) GridView1.Controls(0).Controls.Add(row1) End While End Using エラーの内容 System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。 Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index" お力添えをよろしくお願い致します。

  • エクセルVBAでオートシェープを識別して削除したいのです・・・

    エクセルシートにたくさん貼り付けた画像を一度に削除するため、下記のようなマクロを作成しました。 しかし、これでは「テキストボックス」や「→」のようなオートシェープも全部消えてしまいます。 画像データ(図)だけを認識して消すにはどうすればよいのでしょうか? Sub sakujo() Dim Myshape As Shape For Each Myshape In ActiveSheet.Shapes If Myshape.Type <> msoFormControl Then Myshape.Delete End If Next End Sub

  • word2003のマクロが2007でエラーになる

    word2003(windows2000)で使っていたマクロを、人に頼まれてその人の2007のword(windowsXP)に入れたのですがエラーが出て動かないそうです。 マクロは以下のページにあったものの改造で、どこを直したらよいのかわかりません。 http://okwave.jp/qa/q2344318.html 答えでなく、ヒントでも良いのでどなたか教えてください。 h = Selection.ShapeRange.Heightという行で、「エラー5 プロシージャの呼び出し、または引数が不正です」というようなエラーが出るそうです。 2003ではエラーは出ず、選択されている画像の高さがhに入ります。 よろしくお願いします。 ----------------------------------- Public Sub ChgPest() '選択した画像をクリップボードの中身と入れ替えてemfで貼り付ける Dim T, L, h, W, cl, cr, ct, cb As Integer Dim FName As String Dim MyShape As Shape Dim fd As FileDialog Dim clp As Integer Application.ScreenUpdating = False T = Selection.ShapeRange.Top L = Selection.ShapeRange.Left h = Selection.ShapeRange.Height ←●デバッグするとここが黄色になっている W = Selection.ShapeRange.Width posi = Selection.ShapeRange.RelativeVerticalPosition cl = Selection.ShapeRange.PictureFormat.CropLeft cr = Selection.ShapeRange.PictureFormat.CropRight ct = Selection.ShapeRange.PictureFormat.CropTop cb = Selection.ShapeRange.PictureFormat.CropBottom Set myrange = Selection.Range Selection.Delete Selection.PasteSpecial datatype:=wdPasteEnhancedMetafile 'EMFでペースト clp = ActiveDocument.Shapes.Count 'すべてのshapeを数える Set MyShape = ActiveDocument.Shapes(clp) '最後にペーストしたshape ActiveDocument.Shapes(clp).LockAnchor = False 'アンカーを固定しない ActiveDocument.Shapes(clp).WrapFormat.Type = 3 MyShape.Select With Selection.ShapeRange.PictureFormat .CropLeft = cl .CropRight = cr .CropTop = ct .CropBottom = cb End With Selection.ShapeRange.RelativeVerticalPosition = posi Selection.ShapeRange.Top = T Selection.ShapeRange.Left = L Selection.ShapeRange.Height = h Selection.ShapeRange.Width = W Selection.ShapeRange.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub

  • Worksheetsオブジェクト解放について・・

    VB2005からエクセルを操作するプログラムを書いてます。 設計条件として遅延バインディングの制約があります。 以下のコードではプロセスが残ってしまい原因が分かりません。 有識者のご教授をお願いします。 Public Function OpenBook () As Boolean 'エクセルブックを開く関数 Dim exlAppli As Object = Nothing Dim exlBooks As Object = Nothing Dim exlBook As Object = Nothing Dim exlSheets As Object = Nothing Dim exlSheet As Object = Nothing Try exlAppli = CreateObject("Excel.Application") exlAppli.Visible = False exlAppli.DisplayAlerts = False exlBooks = exlAppli.Workbooks exlBook = exlBooks.Add '(新規作成) exlSheets = exlBook.Worksheets For Each exlSheet In exlSheets '処理 ' ・・中略・・ ' 'シート1個づつをオブジェクト解放 Call Me.sub_ReleaseComObject(DirectCast(sht, Object)) Next Catch ex As Exception '例外処理 MessageBox.Show(ex.Message, "サンプル", MessageBoxButtons.OK, MessageBoxIcon.Error) Return False Finally Call Me.sub_ReleaseComObject(DirectCast(exlSheet, Object)) Call Me.sub_ReleaseComObject(DirectCast(exlSheets, Object)) exlBook.Close(False) Call Me.sub_ReleaseComObject(DirectCast(exlBook, Object)) Call Me.sub_ReleaseComObject(DirectCast(exlBooks, Object)) exlAppli.Quit() Call Me.sub_ReleaseComObject(DirectCast(exlAppli, Object)) End Try Return True End Function 事前バインディングなら上記のコードでプロセスは終了します。 ちなみに、勝手な想像ですが、For Each~に何か原因があるのでしょうか。

  • 【Word2007】はじめに選んでいた場所を選びなおしたい

    Word2007を使用しています。 以前以下の質問をしました。 http://oshiete1.goo.ne.jp/qa4854648.html そこでInlineShapeの情報を取得するための 特殊な方法を教えて頂きました。 ただしこの方法を使用すると 選択されている場所が変更されてしまうため、 この処理をしたあとに、 選択箇所を元に戻したいと思っています。 今行っている処理は以下の通りです。 Sub main() Dim shape As Word.shape Dim ishp As Word.InlineShape For Each sh In ActiveDocument.Shapes sh.Select For Each ishp In Selection.Range.InlineShapes MsgBox (ishp.Width) Next Next End Sub このプログラムの前後で、 現在の選択箇所を取得し、そこに選択を戻せば良いのだろう ということは分かるのですが、その方法が分かりません。 もしよろしければ、教えて頂けませんか? ぜひよろしくお願い致します。

  • 【VB.NET】事後バインディングにおける引数の宣言方法

    【VB.NET】事後バインディングにおける引数の宣言方法  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  開発環境:VB2008+XP になります。  Excel操作コードの部分を事後バインディングにすべく 勉強いたしております。  たとえば   「事前バインディング」     Dim myApp As New Excel.Application     Dim myBook As Excel.Workbook     Dim myBooks As Excel.Workbooks = myApp.Workbooks     Dim xlSheet As Excel.Worksheet     Dim xlSheets As Excel.Sheets       ↓   「事後バインディング」     Dim myApp As Object     Dim myBook As Object     Dim myBooks As Object     Dim xlSheet As Object     Dim xlSheets As Object     myApp = CreateObject("Excel.Application")     myBook = myApp.WorkBook     myBooks = myApp.WorkBooks     xlSheet = myApp.Worksheet     xlSheets = myApp.Sheets のようにするのだと思うのでございますが、  Sub Excel2(ByRef myRng As Excel.Range, ・・・・)                  ↑ここはどうやって宣言すべき                    なのでございましょうか???  「Sub Excel2」内ではmyAppが宣言されておりませんゆえ myApp.Rangeなどといたしますと「宣言されていません」とエラーが 出てしまうと思うのでございますが。。。。       もしお詳しい方がいらっしゃいましたら、是非ともアドバイスいただきたく お願い申し上げます。

  • アクセス(2003)のVBAでビット演算方法

    エクセルのマクロではビット演算ができましたが、アクセスではどのような方法があるのでしょうか? where in 文で値の自動生成も考えられますが、VBやVCでアドインも可能でしょうか教えてください。 '*********** Excel VBA Bit 演算 ************ Private Sub Boln() Dim MyBln As Boolean Dim Object1 As Range Dim Object2 As Range Set Object1 = Range("B11") Set Object2 = Range("B12") MyBln = Object1 And Object2 MsgBox MyBln End Sub '*********** Excel VBA Bit 演算 ************ 以上、宜しくお願いします。

  • Access2000:VBAを使用し、エクセルセルにDo文を使って挿入

    VBAでDo文を使って連続するセルに挿入したい場合 ロジックの書き方を教えていただけますか? あくまでもDo文を使ってです。 Dim ExcelApp As Object 'Excel.Application Dim Book As Object 'Excel.Workbook Dim Sheet As Object 'Excel.Worksheet ・・・略・・・ Sheet.Range("A13").Value 「A13」から下のセルに書き込んでいくものです。 Doの抜け出し方などはわかっています。 よろしくお願いします。

  • VBAで、エクセルからワードへの変換について

    VBAは、全くの初心者で、テキスト等のサンプルコードを参照して書いているのですが 期待通りの動きをしないので、教えてください。 やりたい事は、Excelファイル(A-Fカラム、400行程度)を 1行ページのワードに変換し、400枚のワードファイルを作成します。 その際に、添付画面のように、各カラムを、タイトル、連番、内容などと区分けをして フォントも変えたいです。 下のコードでは、転送は、出来るのですが、1行1ページにならず、また、 エクセルの枠も転送されてしまいます。 ワードVBAも試したのですが、特定文字での検索が難しく、各ページでの 改行位置が異なるため、自分の理解では出来ませんでした。 ワードでテンプレートを作って、Excel VBAから差込になるのでしょうか? よろしくお願い致します。 Sub CopyExcelDataToWord() Dim wsSource As Excel.Worksheet Dim cell As Excel.Range Dim collUniqueHeadings As Collection Dim lngLastRow As Long Dim i As Long Dim appWord As Word.Application Dim docWordTarget As Word.Document Set wsSource = ThisWorkbook.Worksheets(1) With wsSource lngLastRow = .Range("A" & Rows.Count).End(xlUp).Row Set collUniqueHeadings = New Collection For Each cell In .Range("A2:A" & lngLastRow) On Error Resume Next collUniqueHeadings.Add Item:=cell.Value, Key:=cell.Value On Error GoTo 0 Next cell End With Set appWord = CreateObject("Word.Application") With appWord .Visible = True Set docWordTarget = .Documents.Add .ActiveDocument.Select End With For i = 1 To collUniqueHeadings.Count With wsSource .Range("A1").AutoFilter Field:=1, Criteria1:=collUniqueHeadings(i) .Range("A1:D" & lngLastRow).Copy End With With appWord.Selection .PasteExcelTable linkedtoexcel:=False, wordformatting:=True, RTF:=False .TypeParagraph End With Next i For i = 1 To collUniqueHeadings.Count collUniqueHeadings.Remove 1 Next i Set docWordTarget = Nothing Set appWord = Nothing End Sub

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

専門家に質問してみよう