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

投稿日: 2005/05/11(Wed) 20:09
投稿者maruo
Eメール
URL
タイトルRe^5: 制御方法について

こんばんは、またやって参りました。
ぶぶ様に教えて頂いたようにやりました。
とりあえず、前回は一つずつ解決しようと構文の一部を投稿させて頂きました。
今回は、印刷ボタンを押してAutoCADが起動して一連の印刷処理を
する所を投稿させていただきます。
ちょっと長いですが下の構文で実行すると
AutoCADが正常に終わりません。ほんとでしたらAutoCADが閉じて
印刷終了のメッセージが出るはずなのですが.....
どこがおかしのでしょうか?
宜しく、お願い致します。

-----------------------------------------------------------
'「印刷」ボタンを押した時
Private Sub GoUp_Click()
    Dim CurPath As String, importfile As String
    Dim acadApp As AcadApplication
    Dim acadDoc As AcadDocument
    Dim insertPoint(0 To 2) As Double
    Dim scaleFactor As Double
    Dim namelen As Long
    Dim i As Integer, j As Integer
    Dim comstr As String
    Dim booSclFit As Boolean
    Dim acadDocs As AcadDocuments
   '
    On Error Resume Next
    Set objPlot = ThisDrawing.Plot
    'AutoCADアプリケーションオブジェクトを取得
    Set acadApp = GetObject(, "AutoCAD.Application.16")
    'AutoCADアプリケーションオブジェクト取得に失敗した時
    If Err Then
        'AutoCAD 2004を起動
         Set acadApp = CreateObject("AutoCAD.Application.16")
        'AutoCADを表示
         acadApp.Visible = True
        'Acad2004を最大化
         acadApp.WindowState = AcWindowState.acMax
        'アプリを最小化
         WindowState = 1
     'エラーオブジェクトをクリア
        Err.Clear
    End If
----------本日投稿した所----------

    '印刷部数を繰り返す
        For k = 1 To Val(Text0.Text)←教えて頂いた所
        
    'リスト内のDWGファイルの数
    i = DwgList.listcount
    'リストの数だけ繰り返し
    For j = 0 To i - 1
    'DWGファイル名
         importfile = DwgList.List(j)
        'リストボックスの図面をオープン
         Set acadDoc = acadApp.Documents.Open(importfile)
        '印刷実行
        '(レーザープリンタA3の場合)
        If CheckBox1.Value = vbChecked And Val(Text0.Text) = 1 Then
        印刷処理
        End If
        If CheckBox1.Value = vbChecked And Val(Text0.Text) > 1 Then
        For i = 1 To Val(Text0.Text)
        印刷処理
        End If
        
        Next j ←教えて頂いた所
        Next k←教えて頂いた所
        
----------ここまで----------

上記を真似て書き換えてみました。

    '印刷部数を繰り返す
        For k = 1 To Val(Text1.Text)
        
    'リスト内のDWGファイルの数
    i = DwgList.listcount
    'リストの数だけ繰り返し
    For j = i - 1 To 0 Step -1 ←これは逆にソートします。
    'DWGファイル名
         importfile = DwgList.List(j)
        'リストボックスの図面をオープン
         Set acadDoc = acadApp.Documents.Open(importfile)
        '印刷実行
        '(プロッタA1の場合)
        If CheckBox2.Value = vbChecked And Val(Text1.Text) = 1 Then
        印刷処理
        End If
        If CheckBox2.Value = vbChecked And Val(Text1.Text) > 1 Then
        For i = 1 To Val(Text1.Text)
        印刷処理
        End If
        Next j
        Next k
        
   略
        '(プロッタA2の場合)
        上記A1の場合と同じ
        '(プロッタA3の場合)
    上記A1の場合と同じ
   
       'ファイルを閉じる
        acadDoc.Close (False)
        ’Next ←これは不要になりました。
       'ACAD終了
        acadApp.Quit
        ' アプリケーションオブジェクトの解放
        Set acadApp = Nothing
    '変換終了のメッセージを表示
    '65584=65536(メッセージボックスを前面)+48(注意メッセージアイコン)
    MsgBox "印刷終了!", 65584, "End of Plot"
    'アプリの最大化
    WindowState = 0
       End Sub
-------------------------------------------------------------------


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

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

- VBレスキュー(花ちゃん) - - Web Forum -