1 件の投稿を表示中 (合計 2 個)
  • 作成者
    投稿
  • #9900
    zion
    メンバー

    上記マクロは、ワークスペースの情報がレジストリにあるとしていますが、

    Windows XP Pro SP3
    EmEditor Professional(32-bit) Version10.0.4

    では、
    C:Documents and SettingsMy 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 “”) 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 = wsNameNew

    If 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

    #9912
    zion
    メンバー

    名前を付けてワークスペースを保存する時の、ワークスペース名の入力方法を変更しました。

    単純にワークスペース名を入力するだけ

    ファイル選択ダイアログを利用してワークスペース名を入力

    動作確認:
    Windows XP Pro SP3
    EmEditor Professional(32-bit) Version10.0.4

1 件の投稿を表示中 (合計 2 個)
  • フォーラム ‘マクロのサンプル’ には新しいトピックや返信を追加できません。