@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VSTOでWordの表を操作したい

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-02-06 14:30
msoです。

VSTOに初挑戦しているのですが、わからないことがあります。
ネットで調べたりなどしているのですが、
どうしたら良いのかわからない状態なので教えていただきたいです。

下記のソースを実行すると、表が作成されるのですが列を結合したいと思っていますがどうすれば
良いのかわかりません。

コード:
    Private Sub test1()

        Dim rng As Word.Range = ThisDocument.Range(Start:=0, End:=0)
        ThisDocument.Tables.Add(Range:=rng, NumRows:=18, NumColumns:=7)

        With ThisDocument.Tables.Item(1)
            With .Cell(row:=1, column:=1).Range
                .Text = "test"
            End With
        End With

    End Sub



VBA等でもWordの操作をしたことがないので、Wordのオブジェクトモデルから
勉強をしているのですが、どこを処理すればいいのか検討もつきません。
ヒントでも良いので何か教えていただけないでしょうか?


mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-02-06 15:33

コード:

    Private Sub test1()

        Dim rng As Word.Range = ThisDocument.Range(Start:=0, End:=0)
        ThisDocument.Tables.Add(Range:=rng, NumRows:=18, NumColumns:=7)

        With ThisDocument.Tables.Item(1)
            With .Cell(row:=1, column:=1).Range
                .Text = "test"
            End With
        End With

        '単純にひとつセルがなくなるだけ
        'ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Delete()

        Dim hoge As Microsoft.Office.Interop.Word.Cells
        'hoge.Item
        ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Merge(hoge)

    End Sub



Margeメソッドを実行すれば出来そうというところまでは
なんとかきました。
ただ、Margeメソッドに引き渡す値がわからないのですが、
何をセットすればいいのでしょうか??

ご存知の方がいたら教えていただけないでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-06 16:01
引用:

msoさんの書き込み (2006-02-06 15:33) より:

ただ、Margeメソッドに引き渡す値がわからないのですが、
何をセットすればいいのでしょうか??


Excel VBA に習うと Across 引数になるので、VT_BOOL。
すなわち、True か False ですね。

# 横方向への結合サポート。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-02-06 16:28
msoです。

引用:

じゃんぬねっとさんの書き込み (2006-02-06 16:01) より:
Excel VBA に習うと Across 引数になるので、VT_BOOL。
すなわち、True か False ですね。

# 横方向への結合サポート。





返信ありがとうございます。
コード:

    Private Sub test1()

        Dim rng As Word.Range = ThisDocument.Range(Start:=0, End:=0)
        ThisDocument.Tables.Add(Range:=rng, NumRows:=18, NumColumns:=7)

        With ThisDocument.Tables.Item(1)
            With .Cell(row:=1, column:=1).Range
                .Text = "test"
            End With
        End With

        '単純にひとつセルがなくなるだけ
        'ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Delete()

        ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Merge(True)


    End Sub





とやったのですが、
コード:
 型 'Boolean' の値を 'Microsoft.Office.Interop.Word.Cell' に変換できません。


というエラーが出てしまいます。
現在開発している言語がVB.NETなので
Typeを使って変換をしようと思ったのですが、出来ませんでした。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-02-06 16:52
msoです。

コード:

    Private Sub test1()

        Dim rng As Word.Range = ThisDocument.Range(Start:=0, End:=0)
        ThisDocument.Tables.Add(Range:=rng, NumRows:=18, NumColumns:=7)

        With ThisDocument.Tables.Item(1)
            With .Cell(row:=1, column:=1).Range
                .Text = "test"
            End With
        End With

        '単純にひとつセルがなくなるだけ
        'ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Delete()

        '結合する。
        ThisDocument.Tables.Item(1).Cell(row:=1, column:=1).Merge(ThisDocument.Tables.Item(1).Cell(row:=1, column:=2))

    End Sub





上記のソースで結合することが出来ました。
返答していただいたじゃんぬねっとさんありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-06 16:58
引用:

msoさんの書き込み (2006-02-06 16:28) より:

型 'Boolean' の値を 'Microsoft.Office.Interop.Word.Cell' に変換できません。
というエラーが出てしまいます。


あちゃー。(つД`)
このあたりは Excel VBA とは全く違うんですね。

結構似てるのが多いとはいえ、思いっきりウソついちゃいました。(;_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)