Close メソッド(ActiveX)

指定された図面や開いているすべての図面を閉じます。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

object.Close [SaveChanges] [, FileName]
object

タイプ: DocumentDocuments

このメソッドが適用されるオブジェクト。

SaveChanges

アクセス: 入力のみ(オプション)

タイプ: バリアント型

図面を保存するかどうかを指定します。(Documents コレクションから呼び出された場合は適用できません)

  • True: 図面を保存します。
  • False: 図面を保存しません。
FileName

アクセス: 入力のみ(オプション)

タイプ: 文字列

図面に割り当てる名前。初めて図面を保存する際に名前を指定しないと、図面は VBA プロジェクト情報(ThisDrawing.Path¥ThisDrawing.Name)を使用して保存されます。(Documents コレクションから呼び出された場合は適用できません)

戻り値(RetVal)

戻り値はありません。

注意

図面に変更がない場合は、SaveChanges および FileName は無視されます。図面に変更がある場合は、SaveChanges は変更を保存する必要があるかどうかを指定します。SaveChanges パラメータの既定値は True です。

MDI モードでDocuments コレクションからこのメソッドを呼び出すと、開いている図面がすべて閉じてしまいます。単一図面を閉じるには、閉じる図面からこのメソッドを呼び出します。

図面をそのイベント ハンドラ内部から閉じることはできません。

注: 図面を閉じると Document オブジェクトは削除されます。オブジェクトが削除された後で(この場合は、図面を閉じた後で)、そのオブジェクトが参照されないようにしてください。プロセス内のクライアント(VBA マクロ)は、サブルーチンが終了するまで、オブジェクトが削除されたことを認識しない場合があります。ただし、プロセス内のコードに含まれていたオブジェクトであっても、削除された場合は参照されないようにしてください。

VBA:

Sub Example_Close()
    ' This example cycles through the documents collection
    ' and closes all open drawings using the Close method.

    Dim DOC As AcadDocument
    
    ' If there are no open documents, then exit
    If Documents.count = 0 Then
        MsgBox "There are no open documents!"
        Exit Sub
    End If
    
    ' Close all open documents
    For Each DOC In Documents
        If MsgBox("Do you wish to close the document: " & DOC.WindowTitle, vbYesNo & vbQuestion) = vbYes Then
            If DOC.FullName <> "" Then
                DOC.Close
            Else
                MsgBox DOC.name & " has not been saved yet, so it will not be closed."
            End If
        End If
    Next
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_Close()
    ;; This example cycles through the documents collection
    ;; and closes all open drawings using the Close method
    ;; except the current drawing.
    (setq acadObj (vlax-get-acad-object))
    (setq curDoc (vla-get-ActiveDocument acadObj))
    (setq docs (vla-get-Documents acadObj))

    ;; Close all open documents and discard changes, except for the current drawing
    (vlax-for doc docs
        (if (/= (vla-get-Name doc) (vla-get-Name curDoc))
	    (progn
	        (alert (strcat "Closing " (vla-get-Name doc) " file."))
                (vla-Close doc :vlax-false)
	    )
        )
    )
)