- 作成者投稿
- 2010年9月30日 3:09 am #9900zionメンバー
上記マクロは、ワークスペースの情報がレジストリにあるとしていますが、
Windows XP Pro SP3
EmEditor Professional(32-bit) Version10.0.4では、
C:Documents and Settings<ユーザー名>My DocumentsMy Macros
にあるようでしたので、そのように修正しました。‘ FileSytemObjectを生成
Set fso = CreateObject(“Scripting.FileSystemObject”)
‘ ログインユーザー名を取得
Set wshNetwork = CreateObject(“WScript.Network”)
userName = wshNetwork.UserName‘ ワークスペースファイルがあるフォルダ
wsPath = “C:Documents and Settings” & userName & “Local SettingsApplication DataEmurasoftEmEditorWorkspace”
‘ ワークスペースとして認識されるファイル名
wsNameDefault = “LastData.bin”‘ 名前付きワークスペースの名前一覧を取得
Set wsFolder = fso.GetFolder(wsPath)
Set wsFiles = wsFolder.Files
i = -1
workspaces = array()
For Each wsFile in wsFiles
If wsFile.Name <> wsNameDefault Then
i = i + 1
Redim Preserve workspaces(i)
workspaces(i) = wsFile.Name
End If
Next‘ 名前付きワークスペースの数を取得
numWorkspaces = i + 1‘ メニューを作成
Set menu = CreatePopupMenu
menu.Add “ワークスペースを保存(&S)”, 1
menu.Add “名前を付けてワークスペースを保存(&A)”, 2
menu.Add “”, 0, eeMenuSeparator‘ 復元メニュー項目を追加
menu.Add “ワークスペースを復元(&R)”, 3
If numWorkspaces > 0 Then
For i = LBound(workspaces) To UBound(workspaces)
If i < 9 Then label = "&" & CStr(i + 1) & " " ElseIf i = 9 Then label = "&0 " Else label = "" End If menu.Add label & "'" & workspaces(i) & "' を復元", i + 5 Next ' 削除メニュー項目を追加 Set delmenu = CreatePopupMenu For i = LBound(workspaces) To UBound(workspaces) delmenu.Add "'" & workspaces(i) & "' を削除", i + 5 + numWorkspaces Next menu.Add "", 0, eeMenuSeparator menu.AddPopup "ワークスペースを削除", delmenu menu.Add "すべての名前付きワークスペースを削除(&D)", 4 End If ' メニューを表示してユーザーに選んでもらう result = menu.Track(eePosMouse) Select Case result Case 0 ' 未選択 Case 1 ' ワークスペースを保存 editor.ExecuteCommandByID 4330 Case 2 ' 名前を付けてワークスペースを保存(&A) ' デフォルトのワークスペース名を作成 wsNameNew = document.Name If (wsNameNew <> “”) And (editor.Documents.Count > 1) Then
wsNameNew = document.Name & ” など ” & CStr(editor.Documents.Count) & “ファイル”
End If
If wsNameNew = “” Then
wsNameNew = clipboardData.getData(“Text”)
End If
If wsNameNew = “” Then
wsNameNew = “新規ワークスペース”
End If‘ ファイルを開くダイアログを表示し、ワークスペース名を指定してもらう
Set objDialog = CreateObject(“UserAccounts.CommonDialog”)
objDialog.Filter = “すべてのファイル (*.*)|*.*”
objDialog.InitialDir = wsPath
objDialog.FileName = wsNameNewIf objDialog.ShowOpen Then
wsNameNew = fso.GetFileName(objDialog.FileName)
ok = True
‘ 同じ名前のワークスペースが存在するかどうか確認
If numWorkSpaces > 0 Then
For i = LBound(workspaces) To UBound(workspaces)
‘ 同じ名前のワークスペースが存在するので上書きしてよいか確認
If workspaces(i) = wsNameNew Then
ok = Confirm(“ワークスペース ‘” & wsNameNew & “‘ を上書きしますか?”)
Exit For
End If
Next
End If
If ok = True Then
‘ 現在のワークスペースを保存
editor.ExecuteCommandByID 4330
‘ ワークスペースファイルに名前をつけてコピー
fso.CopyFile wsPath & wsNameDefault, wsPath & wsNameNew
End If
End If
Case 3 ‘ ワークスペースを復元
editor.ExecuteCommandByID 4329
Case 4 ‘ すべての名前付きワークスペースを削除
If Confirm(“すべての名前付きワークスペースを削除します。よろしいですか?”) Then
‘ すべての名前付きワークスペースファイルを削除
For i = LBound(workspaces) To UBound(workspaces)
fso.DeleteFile wsPath & workspaces(i)
Next
End If
Case Else
If result < (numWorkspaces + 5) Then ' 選択されたワークスペースを復元 wsNameSelected = workspaces(result - 5) ' 選択されたワークスペースファイルを、デフォルトのワークスペースファイルに上書き fso.CopyFile wsPath & wsNameSelected, wsPath & wsNameDefault ' EmEditorのワークスペースを復元 editor.ExecuteCommandByID 4329 Else ' 選択された名前付きワークスペースを削除 wsNameSelected = workspaces(result - numWorkspaces - 5) If Confirm("ワークスペース '" & wsNameSelected & "' を削除します。よろしいですか?") Then ' 選択された名前付きワークスペースファイルを削除 fso.DeleteFile wsPath & wsNameSelected End If End If End Select2010年10月4日 7:29 am #9912zionメンバー名前を付けてワークスペースを保存する時の、ワークスペース名の入力方法を変更しました。
単純にワークスペース名を入力するだけ
↓
ファイル選択ダイアログを利用してワークスペース名を入力動作確認:
Windows XP Pro SP3
EmEditor Professional(32-bit) Version10.0.4 - 作成者投稿
- このトピックに返信するにはログインしてください。