投稿時間: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 -------------------------------------------------------------------
|