投稿日 | : 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
-------------------------------------------------------------------