VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/04/28(Mon) 22:21
投稿者Nobby
URL
タイトルRe^4: VBで新しい文書を開く

結論から申し上げると、花ちゃんのアドバイスに従い、エラーの出ない他のプログラムを参考に当プログ
ラムを改造し正常に作動させる事に成功しました。

改造の内容については後述しますが、この過程で以下のことを発見しました。

1)オリジナルのプログラムを友人の PC(Windows98SE, Excel, Word共に2000)にセットアップしたと
ころ問題無く作動した。 ついては私のもう1台の PC(英語Windows98SE 4.10.2222A、Excel, Word共に英
語版2000 9.0.2720)で試したところ、これも正常に動いた。 つまりオリジナル・プログラムは Excel,
Wordが2000の場合はOKで、97ではダメではないかと思われる。 尚、これらの PC には runtime はインス
トールされていない。
2)Vectorのサイトから別の runtime(vb6sp6r4)を入手し、うまくインストールできた(と思う)がオ
リジナル・プログラムのエラーは解消できない。
3)オリジナル・プログラムで最初にエラーが発生する個所は冒頭の Set xlApp = New Excel.Applicat
ion である。 つまり、Office97の環境では、新しい文書を開くことだけが問題ではなくExcelに関しても動かないようだ。

以下のようにオリジナル・プログラムを改造したところ Error freeとなりました。

Private Sub Command1_Click()
    'On Error Resume Next    
    Dim objWord As Object   '----改造
    Dim objDoc As Object    '----改造
    Dim objExcel As Object  '----改造
    Dim objBook As Object   '----改造
    Dim i As Integer
    Dim danraku As Integer
    Dim InitialDocPropPrompt As Boolean

    Set objExcel = CreateObject("Excel.Application")    '----改造
    Set objBook = objExcel.Workbooks.Open(App.Path & "\Sample.xls")
    objExcel.Application.DisplayAlerts = False
    'エクセルの指定範囲をコピー
    objBook.Worksheets(1).Range("A1:F13").Copy  '----小改造
    DoEvents
    objExcel.Quit
    
    Set objBook = Nothing
    Set objExcel = Nothing
    
    'Wordを操作
    Set objWord = CreateObject("Word.Application")  '----改造
    '新しい文書を開く
    Set objDoc = objWord.Documents.Add
    'Wordを表示
    objWord.Visible = True
    'Document properties promptの設定値を取得
    If objWord.Application.Options.SavePropertiesPrompt Then
            InitialDocPropPrompt = True
    Else
            InitialDocPropPrompt = False
    End If
    
    '----(この間はOriginalと同じなので記載省略)-----------------------

    'Word の保存
    objWord.Application.Options.SavePropertiesPrompt = False '保存時プロパティ・プロンプト非
表示
    objDoc.SaveAs (App.Path & "\Test.doc")
    'Document properties prompt(Word) の設定を初期値に戻す
    If InitialDocPropPrompt = True Then
            objWord.Application.Options.SavePropertiesPrompt = True
    End If

    Clipboard.Clear '----追加
    
    'オブジェクトを解放
    Set objDoc = Nothing
    Set objWord = Nothing
End Sub

ちなみに、改造後のプログラムはフォーマットしたWindows98SE, Excel97, Word97, runtime無しの環境
に加え英語版Windows98SE, Excel2000, Word2000, runtime無しの環境でも問題無く作動します。 改造内
容がベストのものか分かりませんが結果に満足しています。

花ちゃん、いろいろアドバイス頂き有難うございます。 大変勉強になりました。 Thanks a lot.


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -