AutoNumberPaste

;;AutoNumberPaste
^b::
clipboard = %clipboard%
buf = %clipboard%
srcNo := getSourceNumber()
if (srcNo <> "") {
  nextNo := getNextNumber(srcNo)
  clipboard := RegExReplace(buf, srcNo, nextNo) 
}
send ^v
return

getSourceNumber() {
  buf = %clipboard%
  startPos := RegExMatch(buf, "[0-9]")
  if (0 = startPos) {
    return ("")
  }
  lastPos := startPos
  loop {
    pos := RegExMatch(buf, "[0-9]", bufX, lastPos + 1)
    if (pos = (lastPos + 1)) {
      lastPos := pos
    }
    else
      break
  }
  ret := substr(buf, startPos, lastPos - startPos + 1)
  return ret
}

getNextNumber(src) {
  l := StrLen(src)
  if (l < 1) {
    return
  }
  ret := src + 1
  ret := "00000000000000000000" . ret
  StringRight, ret, ret, l
  return ret
}

今週はAutoHotKeyにたいへん世話になった。20列x60行のActiveReportコントロール群(単純計算で1200個のコントロール!)と格闘しなければならず、AutoHotKeyがなければ腱鞘炎だけでは済まなかっただろう。
AutoHotKeyのスクリプトはどうも書きにくい、がホットキー設定だけに使うのはもったいないのでマクロめいたものを書いてみた。
これは連番文字列を生成する際Excel上で行っていた作業を、テキストエディタ上でできるようにしたもの。