Word2000からWord2007への対応


教えてください  2009-11-10 15:04:26  No: 102062  IP: [192.*.*.*]

◆環境
VB6.0
MicrosoftXP

Word2000でWord出力していたのですが、Word2007に対応することになり、Word2000対応時点のソースを実行すると、今まで一行で表示されていた
データが、途中で改行されてしまい、困っています。

出力するデータは、リストボックスに表示されているデータです。
Wordファイルは、リストボックスに表示されているデータを60行3列で
出力しています。
参照設定で、MicrosoftWord12.0 ObjectLibrary
に変更しました。
----------------------
◆処理
Public m_WordApp As Word.Application
Public m_WordDoc As Word.Document
を宣言し、

60行1列のセルを作成し、
    m_WordDoc.Tables.Add m_WordApp.Selection.Range, NumRows:=60, NumColumns:=1
    
    With m_WordDoc.Tables(No)
        .Borders.OutsideLineStyle = wdLineStyleNone 'これでCELLの線が消える
        .Borders.InsideLineStyle = wdLineStyleNone 'これでCELLの線が消える
        .Range.Paragraphs.Alignment = wdAlignParagraphJustifyHi  '真ん中にそろう
    End With

    With m_WordDoc.Tables(No).Range.ParagraphFormat
'        .LeftIndent = MillimetersToPoints(0)
'        .RightIndent = MillimetersToPoints(0)
        .LeftIndent = 0
        .RightIndent = 0
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceExactly
        .LineSpacing = 12
        .Alignment = wdAlignParagraphJustify
        .WidowControl = False
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
'        .FirstLineIndent = MillimetersToPoints(0)
        .FirstLineIndent = 0
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .AutoAdjustRightIndent = True
        .DisableLineHeightGrid = False
        .FarEastLineBreakControl = True
        .WordWrap = True
        .HangingPunctuation = True
        .HalfWidthPunctuationOnTopOfLine = False
        .AddSpaceBetweenFarEastAndAlpha = True
        .AddSpaceBetweenFarEastAndDigit = True
        .BaseLineAlignment = wdBaselineAlignAuto
    End With

下記処理で
  With m_WordDoc.Tables(TblNo)
    .Cell(Row, 1).Range.InsertAfter Text
  End With
書き込んでいます。
※Text as String

1ページにつき、60行出力させるために、セルを60行分作成し
その中にデータを入れることで実現しています。
#本当は行間を狭める方法がわかればよかったのですが、わからなかったため苦肉の策です。

Textには、vbTabが含まれていますが、それが改行として認識されているようにみえますが、そのようなことはあるのでしょうか?
現状、
Text = "A"+vbTab+"B"+vbTab+C
というデータの場合、Word出力をすると
A
B
C
とセル内に出力されます。

教えてください。
よろしくお願いいたします。

編集 削除
魔界の仮面弁士  2009-11-10 15:13:06  No: 102063  IP: [192.*.*.*]

> #本当は行間を狭める方法がわかればよかったのですが
Word の機能としての意味であれば、このあたりとか。
http://pc.nikkeibp.co.jp/article/NPC/20060601/239697/
http://jjweb.itakura.toyo.ac.jp/pcroom/gyoukan.html
http://kokoro.kir.jp/word/gyoukan1.html


> '        .FirstLineIndent = MillimetersToPoints(0)
正しくは、 .FirstLineIndent = m_WordApp.MillimetersToPoints(0)
ですね。まぁ、コメントアウトされているので関係無いのですけれども。

編集 削除
教えてください  2009-11-10 15:54:40  No: 102064  IP: [192.*.*.*]

魔界の仮面弁士さん、回答ありがとうございます。

私の文章の書き方が悪くて、上手に伝えられなかったのですが、
Wordの機能ではなく、Wordファイルに出力する際に行間の設定が
できればよかったという意味です。

それができなかったので、1ページにセルを60行作成し、セル内に
データを入力しています。

Word2000からWord2007に変更すると、一行で表示されていたデータが
改行されてしまうようになりました。

申し訳ありませんが、解決の糸口を教えていただけないでしょうか。
よろしくお願いいたします。

編集 削除
タカさん  2009-11-12 21:01:18  No: 102065  IP: [192.*.*.*]

m_WordDoc.PageSetup.CharsLine = 60で1ページ60行にできるんじゃないの?
フォントサイズにもよるけど。

編集 削除
教えてください  2009-11-16 14:36:48  No: 102066  IP: [192.*.*.*]

タカさんありがとうございます。

ただ、私がやりたいのは、1ページを60行に設定したいのです。
m_WordDoc.PageSetup.CharsLine =60
だと、1行の文字数が60文字の設定になってしまいました。

Wordの
[ファイル]-[ページ設定]
で、行数を60行に設定するのと同じことをソース上で実現したいです。
その場合、フォントの設定を8にしないと、行数に60行が設定できないので
こちらも合わせてご教授願います。

編集 削除
魔界の仮面弁士  2009-11-16 14:51:03  No: 102067  IP: [192.*.*.*]

> PageSetup.CharsLine =60
LinesPage の書き間違いでしょうね。


> で、行数を60行に設定するのと同じことをソース上で実現したいです。
手順が分かっているのであれば、Word のメニュー項目から
『マクロの記録』を選んだ上で、
>> [ファイル]-[ページ設定]
を行えば、Alt+F11 で表示される VBA 画面に、その設定に必要な
設定が記録されますよね。その自動記録されたコードを見れば、
PageSetup オブジェクトのプロパティで設定できることが
分かるかと思います。

編集 削除