단어로 지수를 자동으로 위 첨자로 변환

개요



autohotkey라는 소프트웨어를 사용하여 word에서 지수를 즉시 위 첨자로 변환시키는 매크로를 소개합니다. 구체적인 사양은 다음과 같습니다.

◯◯x10◇◇ 를 입력한 후「space」또는「enter」키를 누른다 ⇒
  • x (소문자 X)가 "×"(곱하기)로 변환
  • ◇◇를 위 첨자로 변환



  • 참고



    autohotkey를 사용한 적이없는 분은이 링크를 참고해보십시오.
    htps // ch. 니코 ゔ에서. jp/진시치/b㎉마가/아 r455334
    htp://wg16. 하테나 bぉg. jp / 엔트리 / 아토 토호 y_001
    htps : // m / chr / ms / 47f50 36703d3b20371

    또 이번 내용을 쓰는데 있어서 참고로 한 사이트가 이쪽입니다. ↓
    htps //w w. rdv b b. 코m/코데/7959/
    이 링크의 사이트에서는 vba를 사용해 word내의 모든 문장을 검색해 해당하는 개소를 지수로 변환하게 되어 있습니다. 단지 개인적으로 실용성을 생각하면, 마지막으로 정리해 변환하는 것보다 매번 입력할 때마다 변환하는 것이 취급하기 쉬운 것이 아닐까 생각해, autohotkey의 핫 스트링이라고 하는 기능을 사용해 실장해 보았습니다 .

    코드


    #IfWinActive ahk_class OpusApp ;wordを開いている時だけ実行=================================
    #Hotstring C ? *;Cで大文字小文字区別, ?で文章途中からの入力も対象, *でx10を押した瞬間に発動
    #Hotstring B0 ;入力した文字(x10のこと)を消さない
    ::x10:: ;x10が押された時に作動
    oWord := ComObjActive("Word.Application")
    tmp := 1 ;待ち状態にする
    nstart := oWord.Selection.End ;カーソル位置取得
    return
    #Hotstring, B ;B0(入力した文字が残る)をリセット ← 他にもホットストリングを使うなら邪魔
    #If (tmp = 1) ;待ち状態ここから=============================================================
    ~BS:: ;backspaceを押すとリセットする(カーソルがx10より前の時)
    oWord := ComObjActive("Word.Application")
    nmiddle := oWord.Selection.End
    if (nmiddle <= nstart - 1)
    {
    tmp := 0 ;カーソル位置がx10より前ならリセット
        }
    return
    enter:: ;enterspaceで実行
    space::
    oWord := ComObjActive("Word.Application")
    nend := oWord.Selection.End
    myRange := oWord.ActiveDocument.Range(nstart-3, nstart-2) ;"x"の位置に合わせる
    myRange.InsertSymbol(CharacterNumber:=180, Font:="Symbol", Unicode:=False) ;シンボルフォントの×を挿入
    myRange := oWord.ActiveDocument.Range(nstart, nend) ;指数にする位置を選択
    myRange.Font.Superscript := 1 ;上付き文字に変換
    oWord.Selection.Font.Superscript := 0 ;カーソル位置の文字サイズをもとに戻す
    myRange := ;Rangeは消す
    tmp := 0 ;待ち状態をリセット
    return
    #If ;待ち状態ここまで========================================================================
    #If ;ワードのみここまで======================================================================
    

    원래 핫스트링이란 무엇인가라고 하면, 어느 캐릭터 라인을 입력했을 때에 그것을 인지해 동작하는 프로그램입니다. 예를 들어 "ahk"를 입력하면 "autohotkey"라고 출력하는 것과 같은 사용법을 할 수 있습니다. 이것을 사용하여 지수를 입력했을 때 즉시 변환하는 코드를 생각했습니다.

    autohotkey에서는 word,excel,powerpoint의 vba를 조작할 수 있습니다. 그 방법은, 예를 들면 word의 경우,ComObjActive("Word.Application").◯◯◯(vbaのコード)하는 것으로 가능합니다.
    단지 주의하고 싶은 것이, word의 vba와 autohotkey에서는 코드의 문법이 다르기 때문에, 완전히 같은 쓰는 방법은 할 수 없습니다.
    아래에 생각하는 것을 들려 둡니다.

    vba에서 "="가 autohotkey이면 ":="

    예 .Font.Superscript = true → .Font.Superscript := true

    vba with 또는 set이 존재하지 않음

    end if 필요 없음

    세세한 조건을 지정할 때 괄호가 필요

    예 .InsertSymbol CharacterNumber:=180 → .InsertSymbol(CharacterNumber:=180)

    이 코드, 굉장히 편리합니다만, 주의점으로서 x10을 입력한 시점에서 대기 상태가 되어 버리므로, x10과 입력 → 커서 위치를 변경 → 스페이스나 엔터를 누르면 에러가 일어납니다. 그러므로 x10을 입력한 직후에 커서 위치를 바꾸지 않도록 부탁드립니다. 일단 백 스페이스는 대기 상태가 발동하고 있는 도중에도 사용할 가능성이 있다고 생각했기 때문에 조정했습니다.

    그건 그렇고
    oWord := ComObjActive("Word.Application")
    이것을 처음 쓰지 않고 매번 사용할 때마다 쓰는 이유는 만일 워드를 아무것도 열지 않은 상태에서 이 스크립트가 로드되었을 때 에러가 발생하기 때문입니다. #If로 word를 열고 있을 때 한정하고는 있습니다만, #If가 유효한 것은 핫키(space::라든지)에 대해서만이므로 잘 작동하지 않습니다.

    또, vba를 사용할 때 자주 있는 화면의 갱신 오프를 사용할까 헤매었습니다만, 불필요하게 늦어지는 생각이 들었으므로 멈췄습니다. 이것을 작성하면 실행할 수 있습니다. ↓
    oWord.Application.ScreenUpdating := 0

    요약



    지금까지 있을 것 같지 않았던 편리한 코드라고 생각합니다. autohotkey로 word의 vba를 조작하는 코드는 일본어라고 검색해도 거의 없기 때문에, 참고로 받을 수 있으면 기쁩니다.

    만약 좋으면 이쪽의 기사도 부디. ↓
    단어로 그리스 문자를 빠르게 입력
    일반적으로 마우스로 복사, 붙여 넣기, 뒤로 등을 허용하는 매크로

    좋은 웹페이지 즐겨찾기