VBScript
VBA
IMAPI2

VBAでCD,DVDを焼くための参照設定 と光学ドライブを開くためのコード

Excel2013以降は直接現れない

なのでDLLを呼び出す必要がある。

Dllの場所

C:\Windows\System32\imapi2.dll

C:\Windows\System32\imapi2fs.dll

64/32とも同じようである。

参照設定欄

次のようにみえる。
Microsoft IMAPI2 Base Functionality
Microsoft IMAPI2 File System Image Creator

IMAPのマニュアル 日本語はない

Image Mastering API

サンプルコード

Burning a Disc Image
ちなみにこのサンプルはDVD-R、DVD-RWもそのまま焼ける。ただし、CDを焼くためのデータが残るのが欠点。

https://ja.wikipedia.org/wiki/Image_Mastering_API

トレイを開くことはVBA VBSでも可能

Eject/Close CD/DVD drive using PowerShell

これをVBA/VBSに置き換えると以下のとおりである。なお、光学ドライブは本体についているものから0番としてカウントする。外付けを1台つけると1番になる。このコードは、何番が該当するのか確かめるために使える。
従来はWindows Media Playerを呼び出すコードしかなかったが、現在はこれでオープンはできる。ただ今は光学ドライブ自体が手動でしか閉まらないものが多く、閉じる方は難しい。
VBA版は上記の参照設定をしてから動かしてみてください。

OpenCdTray
Sub OpenCdTray()

Dim objDiscMaster As IMAPI2.MsftDiscMaster2: Set objDiscMaster = New IMAPI2.MsftDiscMaster2

Dim objRecorder As IMAPI2.MsftDiscRecorder2


Set objRecorder = New IMAPI2.MsftDiscRecorder2

objRecorder.InitializeDiscRecorder (objDiscMaster.Item(0))

objRecorder.EjectMedia

End Sub


VBScript版

OpenCdTray.vbs
Dim objDiscMaster:set objDiscMaster  =CreateObject("IMAPI2.MsftDiscMaster2")

Dim objRecorder : Set objRecorder = CreateObject("IMAPI2.MsftDiscRecorder2")

objRecorder.InitializeDiscRecorder (objDiscMaster.Item(0))

objRecorder.EjectMedia