Quantcast
Channel: RelaxTools Addin for Excel 2013/2016/2019/Office365(Desktop)
Viewing all 179 articles
Browse latest View live

カンマや改行のあるCSVのパース

$
0
0

RFC4180準拠 のCSVパーサ

Twitterで以下のような発言を見かけた。

おっ、ちょうど RFC4180準拠( http://www.kasai.fm/wiki/rfc4180jp )のCSVパーサを作ったところだったので公開します。

返却される値はCollecitonの中にCollectionがネストした形になります。

固有のクラス(StringBuilderやCharCursor)を使用しているのはご容赦。一番したのURLから全体のソースをご確認ください。

'--------------------------------------------------------------
' CSVパーサー RFC4180準拠
' コーテーションの有無, デリミタ指定あり
'--------------------------------------------------------------
Public Function CsvParser(ByVal strBuf As String, Optional ByVal Quatation As Boolean = False, Optional ByVal Delimiter As String = ",") As Collection

    Const C_QUAT As String = """"
    Dim IC As ICursor
    Dim sw As Boolean
    Dim blnLineBreak As Boolean
    Dim blnItemBreak As Boolean
    Dim Col As Collection
    Dim Row As Collection
    Dim lngQuot As Long
    
    lngQuot = 0
    
    sw = False
    
    Set Row = New Collection
    
    Set IC = Constructor(New CharCursor, strBuf)
    Do Until IC.Eof
        
        '初期化
        Set Col = New Collection
        blnLineBreak = False

        Do Until IC.Eof Or blnLineBreak
        
            '初期化
            Dim SB As StringBuilder
            Set SB = New StringBuilder
            blnItemBreak = False
            
            Do Until IC.Eof Or blnLineBreak Or blnItemBreak

                Select Case IC.Item
                    Case C_QUAT

                        'コーテーションありの場合
                        If Quatation Then

                            lngQuot = lngQuot + 1

                            If sw Then

                                '次の文字がQuatation
                                If IC.Item(1) = C_QUAT Then
                                    lngQuot = lngQuot + 1
                                    SB.Append C_QUAT
                                    IC.MoveNext
                                Else
                                    sw = False
                                End If

                            Else
                                sw = True
                            End If
                        End If

                    Case vbCr

                        If sw Then
                            SB.Append IC.Item
                        End If

                    Case vbLf

                        If sw Then
                            SB.Append IC.Item
                        Else
                            blnLineBreak = True
                        End If

                    Case Delimiter

                        If sw Then
                            SB.Append IC.Item
                        Else
                            blnItemBreak = True
                        End If

                    Case Else

                        SB.Append IC.Item

                End Select
            
                IC.MoveNext
            Loop
            
            '列追加処理
            Col.Add SB.ToString
            
        Loop
        
        '行追加処理
        Row.Add Col
        
    Loop
    
    'ダブルコーテーションが偶数ではない場合
    If lngQuot Mod 2 <> 0 Then
        Message.Throw 1, Me, "CsvParser", "Invalid Format(Quotation)"
    End If
    
    Set CsvParser = Row
    
End Function

呼び出し方サンプル

Sub CsvParser_Sample()

    Dim strBuf As String
    Dim Row As Collection
    Dim Col As Collection
    Dim v As Variant
    strBuf = "1, Watanabe, Fukushima, 36, ""カンマがあっても,OK""" & vbCrLf & "2, satoh, chiba, 24, ""改行があっても" & vbLf & "OKやで"""

    Set Row = StringHelper.CsvParser(strBuf, True)

    For Each Col In Row
        For Each v In Col
            Debug.Print v
        Next
    Next

End Sub

イミディエイトウィンドウ

1
 Watanabe
 Fukushima
 36
 カンマがあっても,OK
2
 satoh
 chiba
 24
 改行があっても
OKやで

全体のソースはGithubにて公開しています。

Hidennotare v1

https://github.com/RelaxTools/Hidennotare/blob/master/src/StringHelper.cls


2019年8月Windows Update後、VB関連死亡の件まとめ

$
0
0

「プロシージャの呼び出し、または引数が不正です。」から改題しました。

ホッテントリからヤバメな情報が流れてきた。8月14日のWindows Update 後、VB関連が死亡するらしい。

実はこの現象を8月15日に確認していた。原因がわからずふて寝しましたが。

再現ソース

Option Explicit

Sub SaigenTest()

    Call a

    Debug.Print "Success!"

End Sub

Private Sub a(ParamArray p())

    'ParramArray の値を引数で渡すと落ちる
    Call b(p)

End Sub

Private Sub b(ByVal v As Variant)
    

End Sub

実行すると以下の場所で「プロシージャの呼び出し、または引数が不正です。」になる。

使用しているWindows 10 は 1803だったので(古い?) KB4512501 が入っているか確認してみるとやっぱり入っていた。

回避方法はなさそうなので試しにアンインストールしてみたところ、正常に動作することを確認した。

作者が確認したところ、RelaxToolsで同様の現象は確認されていませんが、現象が起こるようでしたら、パッチのアンインストールで対応するしかなさそうです。

続報、鵜原様のところでの再現

callmekohei 様の現象と修正内容

Philipp Stiefel 様の検証内容

8/17日時点 Microsoft の対応状況

バージョン 状態 対応スケジュール
Windows 10(1903) 調査中 8月下旬
Windows 10(1809), Windows Server 2019 調査中 数日中
Windows 10(1803) 調査中 数日中
Windows 10(1709) 解決済み KB4512494で解決
Windows 10(1703) 調査中 数日中
Windows 10(1607), Windows Server 2016 調査中 数日中
Windows 10(1507) 調査中 数日中
Windows 8.1 , Windows Server 2012 R2 解決済み KB4517298で解決
Windows Server 2012 解決済み KB4517302で解決
Windows7, Windows Server 2008 R2 解決済み KB4517297で解決
ソース:https://docs.microsoft.com/ja-jp/windows/release-information/

RelaxToolsがマルウェア判定される件

$
0
0

RelaxToolsがWindows Defenderにマルウェア判定される件

11月中旬、Windows Update 後、以下のようなツイートが見られるようになった。

その後は以下のようなツイートが見られるようになった。

Windows Defender が RelaxToolsのVBA のプロジェクトを削除してしまい、VBAの関数が呼び出せずにエラーになるようだ。

そうこうしていると、自PCでもRelaxToolsがマルウェア判定されてしまうようになった。

とりあえず、Windows Defender からの誤検知を解除する必要があると思い、解除申請方法を調べると以下メッセージがひっかかる。

https://answers.microsoft.com/ja-jp/protect/forum/protect_defender-protect_scanning-windows_10/defender/c6d6ebb2-d741-4a81-8ac6-8bee0ab83908

上記、手順にて Microsoft にマルウェアではない旨送信したところ、1日程度で解除してもらえました。

Windows Defender マルウェア判定の解除結果

おいおいRelaxTools-Addin の最新版( 4.25.2 )のマルウェア判定が解除されたパターンファイルが配信されるとおもわれますが、お急ぎの場合には 以下、手順でWindows Defender の定義を最新にしてからRelaxToolsを再インストールしてみてください。

Windows Defender の キャッシュをクリアし、最新のパターンファイルを入手する方法

1.コマンドラインを管理者起動し、以下コマンドを実行する。

cd c:\Program Files\Windows Defender
MpCmdRun.exe -removedefinitions -dynamicsignatures
MpCmdRun.exe -SignatureUpdate

2.または、以下URLからダウンロードする。

https://www.microsoft.com/en-us/wdsi/definitions

Excel 2019対応&バグ修正

$
0
0

最近やっと Excel 2019 に触る機会があり、RelaxTools Addin での動作確認が取れました。

遅くなってすみません、来年にはそのうち、Excel 2021が出てくるんでしょうね。。。

と、いうわけで、サイトやgit hub 、プログラムに関して表記の修正をしました。

2010ももうすぐサポート切れですが、しばらくは残しておきますか。。。(消すのが面倒なだけ)

また、今回ちょっとバグ修正が入っています。A1保存で、もともとA1を含んだ選択範囲があったばあいにA1のみにならないという不具合を修正しています。よかったら最新版をどうぞ。

https://github.com/RelaxTools/RelaxTools-Addin/releases/tag/4.25.5

【特集】電子職印をつかってみよう

$
0
0

【特集】電子職印をつかってみよう

 コロナ禍の中いかがお過ごしでしょうか。テレワークの人も増えていますが、印鑑を押すために出社するという話も聞いたりして、日本のはんこ文化のダメダメなところが浮き彫りになっています。
 政府も重い腰を上げ、印鑑の廃止に動いており、自分もこの流れを好意的に見ています。

 とりあえず、紙での資料をやめて、直接Excelファイルに印鑑を押してみるのも手かもしれません。法的な効力が必要なものとは別に、日々使用する認印のようなものならこの機能で代用可能です。

fig1. 電子職印機能

RelaxTools Addin では 印鑑/データ印/ビジネス印/よくできました(おまけ) が使えます。

電子職印の使い方

印鑑を押したいセルを選択します。

fig2. セルの選択

印鑑のタブを選択すると、登録済みの印影が表示されます。
押したい印影をクリックします。

fig3. 印影の選択

選択したセルの中央に印影が押されます。
押された印影はシェイプと同じようにドラッグで移動したり、サイズ変更が可能です。

fig4. 押された印影

印鑑の設定画面

印鑑機能を選択し、はんこの一覧の下にある「印鑑の追加/変更/削除」を選択すると設定画面を出すことができます。

fig5. 設定画面(印鑑)

印影をプレビューで確認しながら、以下の指定が可能です。
・スタンプの種類(通常/画像ファイル)
・外枠(円形/小判型/四角形)
・文字の方向(縦書き/横書き)
・名前
・表示フォント
・印影色/サイズ
を指定できます。

 印鑑の追加を行う場合には、元になるコピーしたい印鑑を選択中に、リスト追加ボタンを押すとできます。

fig6. 印鑑の追加

データ印の設定画面

 データ印は中央の帯部分に現在の日付を出すことが可能な印鑑です。書式を指定することにより、西暦はもとより、和暦(元号)を表示することも可能です。(Excel2007以前やアップデートが行われていないExcelでは表示されない場合があるかもしれません)

fig7. 設定画面(データ印)

なお、中央の帯は日付だけでなく、文字も入力可能です。

fig.8 日付の形式への文字列設定

ビジネス印の設定画面

fig9. 設定画面(ビジネス印)

 ビジネス印では長方形、丸形、正方形の決まった形の定型印を押すことができます。また、「$d」のメタ文字を使用すると日付を文章内に簡単に入れ込むことが可能になります。
 3行以上の文章を記述した場合、自動的に1行目が大きく表示されますので、タイトルとして利用してください。

fig10. 4行を指定した場合のビジネス印

よくできました

fig11. よくできました

おまけ機能ですが、小学校での懐かしいはんこです。使いどころは作者の自分も不明です。

電子職印がうまく動作しない場合

 たまにJavaアプリケーション(Eclipseなど)やクリップボードを使用するアプリケーションが起動していると電子職印がうまく動作しない場合(印影の表示が乱れる、表示されない)があります。その際に以下の設定をためしてみてください。
 RelaxTools タブ > 共通設定 > RelaxTools共通設定

fig12. RelaxTools共通設定

「かんたん表Dx/付箋/電子職印の動作が不安定な場合」の数字を10~100msに設定してみてください。

fig13. 不安定な場合の対処

以上、電子職印機能の紹介でした。

そこFor Eachじゃなくて MoveNextでしょ

$
0
0

今の言語は必ずIterator(For Each)があってとても簡単にループが作成できて便利なのだが、For Each を使って集計処理をすると以下のようなロジックになる場合が多い。

For Each を使用した集計処理

    Dim col As Collection
    Dim v As Variant
    Dim strWork As String
    Dim lngCnt As Long
    
    Set col = New Collection
    
    col.Add "あ"
    col.Add "い"
    col.Add "い"
    col.Add "う"
    col.Add "え"
    col.Add "え"
    col.Add "お"
    col.Add "お"

    strWork = ""
    lngCnt = 0
    
    For Each v In col
    
        If v <> strWork Then
            
            '初回
            If strWork <> "" Then
                Debug.Print strWork & lngCnt
            End If
        
            strWork = v
            lngCnt = 0
        
        End If
        
        lngCnt = lngCnt + 1
    
    Next

    '集計結果を表示する前にループを抜けてしまう。
    If v <> strWork Then
        Debug.Print strWork & lngCnt
    End If


結果

あ1
い2
う1
え2
お2

結果はもちろん合ってはいるのだけれど、初期化を行う場所や結果を表示する場所が2重になってしまっている。こんなことやっているとちょっと格好が悪い。昔(CobolやVBの時代)はこんなことはなかったはずだが、Iteratorを使うとこうなってしまうのは仕方がないなとは思う。
かといって、コレクションをカーソル風に読むのはわりと面倒。というわけで、コレクションを カーソル風に読むクラスを作成してみた。

カーソル風コレクション読み込みクラス

'------------------------------------------------------
' カーソル風コレクション読み込みクラス
'------------------------------------------------------
Option Explicit

Private mCol As Collection
Private mIndex As Long
Private Sub Class_Initialize()
    mIndex = 0
End Sub
Private Sub Class_Terminate()
    Set mCol = Nothing
End Sub
'------------------------------------------------------
' コンストラクタ
'------------------------------------------------------
Public Sub Init(col As Collection)
 
    Set mCol = col
    Me.MoveFirst
    
End Sub
'------------------------------------------------------
' 終了判定 
'------------------------------------------------------
Property Get Eof() As Boolean

    If mCol Is Nothing Then
        Eof = True
        Exit Sub
    End If
    Eof = mCol.Count < mIndex

End Property
'------------------------------------------------------
' 最初の行に移動
'------------------------------------------------------
Public Sub MoveFirst()
    mIndex = 1
End Sub
'------------------------------------------------------
' 次行取得
'------------------------------------------------------
Public Sub MoveNext()
    mIndex = mIndex + 1
End Sub
'------------------------------------------------------
' セル取得
'------------------------------------------------------
Public Property Get item() As Variant

    If Me.Eof Then
        'EOF後は最後の値を返す
        If IsObject(mCol(mCol.Count)) Then
            Set item = mCol(mCol.Count)
        Else
            item = mCol(mCol.Count)
        End If
    Else
        If IsObject(mCol(mIndex)) Then
            Set item = mCol(mIndex)
        Else
            item = mCol(mIndex)
        End If
    End If
End Property

MoveNext を用いた集計処理

上記のクラスを使えば、記述内容がすっきりする。

    Dim col As Collection
    Dim v As Variant
    Dim strWork As String
    Dim lngCnt As Long
    
    Set col = New Collection
    
    col.Add "あ"
    col.Add "い"
    col.Add "い"
    col.Add "う"
    col.Add "え"
    col.Add "え"
    col.Add "お"
    col.Add "お"
    
    Dim cc As CollectionCursor
    
    Set cc = New CollectionCursor
    cc.Init col
    
    Do Until cc.Eof
    
        '初期化
        strWork = cc.item
        lngCnt = 0
            
        '集計処理
        Do Until cc.Eof Or strWork <> cc.item
    
            lngCnt = lngCnt + 1
            
            cc.MoveNext
        Loop
        
        '集計結果
        Debug.Print strWork & lngCnt
        
   Loop
あ1
い2
う1
え2
お2

見てわかる通り、初期化を行う場所、集計する場所、修正結果を表示する場所が一目瞭然であると思う。ループの中で次のコレクションに移動できないとこういったロジックを書くことができない。

エクスプローラのファイルコピー情報を取り出す

$
0
0

エクスプローラのコピー情報を取り出す処理をもともと作成していたが、ANSI版を呼んでいて、UNICODE対応していなかったことと、微妙なバグ、Excel 2007を対象外としたことでとてもシンプルな記述にした。2ファイル以上の場合、CRLFで区切って返却。

Excelバージョン:Excel 2010 以上
32bit/64bit版 UNICODE対応

’Excel 2010 以降 32/64bit 対応
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
Private Declare PtrSafe Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As LongPtr
Private Declare PtrSafe Function DragQueryFileW Lib "shell32.dll" (ByVal hDrop As LongPtr, ByVal UINT As Long, ByVal lpszFile As LongPtr, ByVal ch As Long) As Long
Private Const CF_HDROP As Long = 15
'--------------------------------------------------------------
' クリップボードからファイル名を取得
'--------------------------------------------------------------
Public Function GetCopyClipText() As String

    Dim hData As LongPtr
    Dim files As Long
    Dim i As Long
    Dim strFilePath As String
    Dim ret As String
    
    If OpenClipboard(0) <> 0 Then
   
        hData = GetClipboardData(CF_HDROP)
        
        If Not IsNull(hData) Then
            
            'ファイルの数を取得
            files = DragQueryFileW(hData, -1, 0, 0)
            For i = 0 To files - 1 Step 1
                
                'サイズを取得
                Dim lngSize As Long
                lngSize = DragQueryFileW(hData, i, 0, 0)
                
                'DragQueryFileWの返却するサイズは終端を含まない
                strFilePath = String$(lngSize + 1, vbNullChar)
                
                lngSize = DragQueryFileW(hData, i, StrPtr(strFilePath), Len(strFilePath))
                
                If i = 0 Then
                    ret = Left$(strFilePath, lngSize)
                Else
                    ret = ret & vbCrLf & Left$(strFilePath, lngSize)
                End If
            Next
        End If
        Call CloseClipboard
    
    End If
    
    GetCopyClipText = ret
    
End Function

テーブル機能を使うなら列名が使いたい

$
0
0

テーブル機能は便利だ。VBAで読むにしてもデータの範囲が決まっているのがありがたい。

今までは「セルが空白になったら」とか 「UsedRangeの範囲外になったら」「印刷範囲外になったら」などの割合あいまいな終了条件を書くことが多かったからだ。テーブル機能を使う場合、列の内容を取得する場合、EnumやConstで定義した列番号でアクセスするのが一般的だ。

しかし、ACCESSやDBでよく使うような列名が使いたい。だってテーブル機能にはヘッダが合って列名があるじゃん!それ使えないんかい!ということで、以前も紹介した集計処理に使用できる Cursorクラスをテーブル用に作成した。

ブレイク処理対応テーブル読み込みクラス

'------------------------------------------------------------------------
' ブレイク処理対応テーブル読み込みクラス
'------------------------------------------------------------------------
Option Explicit

Private LO As ListObject
Private WS As Worksheet
Private lngStartRow As Long
Private lngRow As Long
Private lngLastRow As Long
'------------------------------------------------------
' コンストラクタ
'------------------------------------------------------
Public Sub Init(sheet As Worksheet)
    
    Set WS = sheet
    Set LO = WS.ListObjects(1)
    
    'データの最初の行
    lngStartRow = LO.DataBodyRange(1).Row
    
    'データの最後の行
    lngLastRow = LO.DataBodyRange(LO.DataBodyRange.Count).Row
    
    'カレント行
    lngRow = lngStartRow
    
    SkipHiddenRow

End Sub
'------------------------------------------------------
' 終了判定
'------------------------------------------------------
Property Get Eof() As Boolean
    Eof = (lngRow > lngLastRow Or lngRow < 1)
End Property
'------------------------------------------------------
' 最初の行に移動
'------------------------------------------------------
Sub MoveFirst()
    lngRow = lngStartRow
    SkipHiddenRow
End Sub
'------------------------------------------------------
' 次行取得
'------------------------------------------------------
Sub MoveNext()
    lngRow = lngRow + 1
    SkipHiddenRow
End Sub
'------------------------------------------------------
' セル取得
'------------------------------------------------------
Property Get item(ByVal strCol As String) As Range
    
    Set item = WS.Cells(lngRow, LO.ListColumns(strCol).Range(1).Column)
    
End Property
'------------------------------------------------------
' 非表示行をスキップ
'------------------------------------------------------
Private Sub SkipHiddenRow()
    Do Until Not WS.Rows(lngRow).Hidden Or Me.Eof
        lngRow = lngRow + 1
    Loop
End Sub

Private Sub Class_Terminate()
    Set LO = Nothing
    Set WS = Nothing
End Sub

56行目の LO.ListColumns(strCol).Range(1).Column で列名から列番号に変換をかけている。

テーブルの指定がシートに1つ目固定になっているので適宜修正していただきたい。

非表示行をスキップするようになっているのでそっちも適宜で。

このようなテーブル機能で作成された表を読むこととする。

呼び出し側

Sub 呼び出し側()

    Dim tc As TableCursor
    
    Set tc = New TableCursor
    
    tc.Init Sheet1
    
    Do Until tc.Eof

       Debug.Print tc.item("id").Value
       Debug.Print tc.item("ja").Value
       Debug.Print tc.item("en").Value
        
        tc.MoveNext
    Loop

End Sub

どうだろうか。便利だと思うのだが。


エイプリルフール中止のお知らせ

$
0
0

今年は、元号の発表があるからエイプリルフールは中止らしいですね。
兵〇県警につかまっちゃうよ的なお話もあるようですし、しょうがないですね。

そういえば、去年Excel方眼死していた私ですが、
その間、異世界に行っていました、初心者がよく作るプログラムの文言に1文足すだけで異世界に行けてしまうとは。
皆さんもゆめゆめ気を付けてくださいね。

Excel常駐モード

$
0
0

Excel常駐モード

 4.26.1 より 「Excel 常駐モード」という機能を追加しました。
 Excel2013以降、MDI(マルチドキュメントインターフェース)からSDI(シングルドキュメントインターフェース) 変更になりました。
 1ブックが1ウィンドウになり、より使いやすくなったわけですが、最後のブックを閉じるとExcel 自体が終了してしまいます。
 次にExcelを起動すると、アドインを読み込んだりして起動が遅くなり、イライラしがちです。(RelaxToolsが重くてすんません)

fig01. ありがちな起動時のレスポンス悪化

 そこで、最後のブックを閉じても、Excel が終了しないようにする機能「Excel常駐モード」を追加しました。

 設定方法ですが、RelaxToolsタブ→共通設定→RelaxTools共通設定をクリックし、以下の設定画面で、Excel常駐モードのチェックをオンにします。

fig02. RelaxTools共通設定

 Excel常駐モードを有効にした場合、起動時に以下のメッセージが表示され、ブックを閉じても終了しなくなります。

fig03. 起動時のポップアップメッセージ(Windows 10)

Excel を終了したい場合、以下のような空のウィンドウが最小化されているので、これを閉じると、Excel が終了します。

以上です。これで、不用意にExcelを終了させてイライラすることが無くなります。
Excelが終了しなくなるので、RelaxTools のバージョンアップ時などにExcelの終了し忘れなどに注意してください。

Oggi 2021年1月号【Oggi大学】掲載

$
0
0

Oggi 2021年1月号【Oggi大学】掲載

New!◆Oggi 2021年1月号 Oggi大学 「脱はんこな生活は本当に可能なんですか?」 で 「RelaxTools-Addin」が紹介されました。

【Oggi連動企画2】すぐ使える時短機能

$
0
0

【Oggi連動企画2】すぐ使える時短機能

 oggi 紙面からいらっしゃった方こんにちは、RelaxTools の中の人です。紙面では「はんこ」の機能でしたが、RelaxTools を使うなら他にもたくさんの機能を知ってもらいたい!ということで連動企画を立ち上げました。職場ですぐ使える時短機能でサクッと余分な仕事は終わらせて、メインの仕事に集中しましょう。

「A1保存」機能

 最初からこの機能がなぜ Excel が無いのか?と思われるかもしれません。Excel のカーソルは前回保存した場所を表示するのが普通なのですが、それっておかしくない!?カーソルは左上に常にあった方がしっくりこない?という人のための機能です。

fig01 A1保存機能

 なお、保存の際に表示倍率とブックの表示方法が事前に設定可能です。

fig02 ホームポジション(A1)設定

付箋機能

 すぐに使える付箋機能を用意しています。

fig03 付箋機能

色も5色でわかりやすく。標準、メモ、吹き出し、線吹き出し、バルーン、ピンの種類があります。 初期値は「付箋の設定」で指定可能です。

fig04 付箋の種類

十字カーソル

 大きい表をあつかっていると行列が良く分からなくなってきます。十字カーソルを表示して確実に入力していきましょう。好きな色、透明度に変えられます。

fig05 十字カーソル

同名ブックを参照用に開く

 Excel の制限として有名なのが同名のブックを開くことができないことです。RelaxToolsでは参照のみではありますが、同名のブックを開くことが可能です。エクスプローラーでExcelファイルを右クリックしたときに表示されるメニューから選択可能です。

fig06 エクスプローラーの右クリックメニュー

 または、RelaxToolsタブの「開く」メニューでも同様のことが可能です。

fig07 「開く」メニュー

シェイプの文字列検索

 Excel でできないことその2ですが、シェイプの文字列が検索できません。エエーっておもいますよね?できないのです。RelaxTools ではシェイプの文字列を検索することが可能です。

fig08 セル・シェイプの正規表現検索/置換/文字修飾

以上、簡単ではありますが、RelaxTools-Addin の説明となります。ぜひ使ってみてください。

背景で「あかんヤツ」を表示

$
0
0

背景で「あかんヤツ」を表示

 バージョン4.27.1 で背景の設定機能を追加しました。

 フォロワーの「りゅうりゅう」さんが画期的なExcel「背景」の使い方を発明してバズっていた。すばらしいアイディアで、この時点では自分には特に関係ないと思っていたのだが。

 「セル結合禁止」については諸説ありますが、最近では、河野太郎内閣府特命担当大臣 の「機械判読可能なデータの表記方法の統一ルール案」によるとあまり良いのもではありません。

 すると、Excelアドイン「稲妻線」の作者「てつ」さんがこうつぶやいた。

 むむ、なんか振られてしまった。しかも「りゅうりゅう」さんからは快諾が得られたので実装してみることにした。

 新機能を追加するにあたり、背景を「セル結合禁止」にするだけではちょっと物足りないかと思い、「窓の杜」の「やじうまの杜」で取り上げられていた「お役所「Excel」の改善案が公開 ~あかんヤツ→ええヤツの例がわかりやすく、一般市民にも結構参考になる」を元に4パターンのあかんヤツを追加した。

以下、あかんヤツ4パターンの表示は以下のようになります。この背景見てしまっては、もう「あかんヤツ」をやるわけにはいかないでしょう。

fig1. あかんヤツ

 使用方法は、「RelaxApps」→背景の設定で可能となります。「機密情報」「draft」「締め切り厳守」など一般的(?)なものから「Excel方眼紙禁止」も背景に表示することが可能です。

 なお、「あかんヤツ」は人それぞれです。「セルの結合」をしていたとしてもいじめてもいいということにはなりません。TPOによるということを理解してお使いください。

以上です。

新年のご挨拶

$
0
0

 昨年は「RelaxTools Addin」をご利用いただき大変ありがとうございました。
 本年もよろしくお願いいたします。

 昨年の振り返りをすると、ツール自体のアップデートよりも youtube の有名な人にとりあげられたことがあります。

youtube で取り上げられる

RelaxTools Addin 使い方 by 金子晃之 さん 57.6万人(2021/01/04時点)のフォロワーがいる
2020年登録者を伸ばしたYouTuberで7位になったPC/Officeの使い方動画での一番の注目人物です。

Excel の 機能が400個増える! 驚愕の便利アドイン by 戸田覚 さん 7.6万人(2021/01/04時点)のフォロワーがいらっしゃる人気チャンネルです。

女性ファッション誌に取り上げられる

まさかの働く女性に人気なファッション誌に取り上げられる事態もありました。

Oggi 2021年1月号 Oggi大学 「脱はんこな生活は本当に可能なんですか?」 で 「RelaxTools-Addin」が紹介されました。 触れられる程度ではありますが、働く女性にもアピールできました。

WEBメディアに取り上げられる

いつも「窓の杜」さん、しょうもないネタに突っ込んでいただいて毎度ありがとうございます。今年もよろしお願いします。今年は Twitter のフォロワーさんからネタを提供していただいた機能を追加したりましました。

窓の杜 – セル結合禁止”などのスローガンをExcel背景に挿入して意識向上! 「RelaxTools Addin」v4.27.1
https://forest.watch.impress.co.jp/docs/news/1293623.html

IT media News – 「セル結合禁止」……Excel背景に“あかんヤツ”表示 アドオン「RelaxTools Addin」に新機能
https://www.itmedia.co.jp/news/articles/2012/09/news116.html

やじうまWatch – これなら効果あり? Excelの背景に「Excel方眼紙禁止」を表示して注意喚起するアドオン
https://internet.watch.impress.co.jp/docs/yajiuma/1294193.html

今年の抱負

 今年の抱負としては、あまり新しい機能追加もないと思うので、バグ修正がメインになるかと思います。Microsoft の仕様変更がなければいいんですが。

TimeLeapの動作を変更しました(Version 4.27.2)

$
0
0

TimeLeapの動作を変更しました(Version 4.27.2)

 TimeLeap の不具合を修正した際に、TimeLeapの動作を見直しました。
 内容としては 「最新のブックに上書き」 の際に履歴を作成しないようにしました。
 そもそも TimeLeapの動作が分からないという話もありますので、ここでは TimeLeapの動作とシチュエーション別のコマンドを説明します。

例 TimeLeap を有効にして、あ[保存]い[保存]し[保存]て[保存]る[保存] というオペレーションをした場合

以下j、セルに1文字入力するごとにブックを保存した場合のExcelファイルの履歴のイメージです。4つの履歴がTimeLeapフォルダに作成されます。

※ 履歴「000」のファイルは特殊で、最新のファイルのクローン(コピー)となります。

TimeLeap リストには以下のように表示されます。

例 最新ファイルがサーバ上のファイルで、他の人に上書きされてしまった場合

 皆さんはサーバにある複数人でアクセスするファイルを、他の人がローカルで修正したファイルで上書きされたことがありますか? 私はあります。半日かかって作成したシートが消えました。その場合に自分が保存したところまで戻すオペレーションです。

TimeLeap リストには以下のように表示されます 。

「000」の履歴で、最新のブックを上書きする

「000」の履歴は前回自分が保存したブックと同じものなので、これを最新ブックに上書きすれば他の人の修正を戻すことが可能です。

実際には、上書きしてしまうと、他の人に怒られるかもしれないので、上書きしていいか確認してくださいね。実際は「000」と最新のブックを比較しながら更新になるかも。

例 最新バージョンが壊れてしまったり、以前のバージョンに戻したい場合

 前のバージョンに戻したい場合のオペレーションとなります。

もし、元にもどしたい場合には 000 を「最新のブックに上書き」すれば簡単に元に戻せます。

TimeLeap リストには以下のように表示されます

以上、TimeLeapの所作について説明しました。使わないと損な機能なので、今すぐ、ONにしてください。


Windows 11 対応

$
0
0

Windows 11 対応

ご無沙汰の更新です、自分の作業用PCが Windows11 に非対応のマシンであったため、長らく対応できないでいましたが、やっと、新しいPCを購入できましたので、対応します。
特にエラーもなく実行できているので問題なさそうです。

別途、社内データの個人情報(社員番号)をマスクする要望があり、ハッシュ関数(Sha2)をユーザ定義関数で呼べるようにしました。
擬人化キャラについてはまた別スレにて。

2022/07/29(fri) RelaxTools-Addin Version 4.28.0(RustRemover)
◇機能追加
・Windows11 に対応したつもり(動作確認のみ)
・RelaxTools Addin擬人化キャラクターRelaxToolsちゃん(仮称)を「RelaxToolsについて」に追加。
・2つの範囲の入替について書式をコピーしないバージョンを追加。#83
・ユーザ定義関数にハッシュ関数を3つ追加。
ただし、.Net3.5がインストールされていること。
 GetSHA256/GetSHA384/GetSHA512

なお、ハッシュ関数のユーザ定義関数を使用するためには、.Net 3.5をインストールする必要があります。

今回追加されるユーザ定義関数は以下の3つです。

ハッシュ元のセルを指定(範囲も可能)すると、ハッシュ後の値を返却します。
パスワードや社員番号などの短いものをハッシュする場合にはソルトを付加するなどして、生成を行うようにしてください。

Windows11で.Net 3.5 を導入する場合には、
コントロールパネル→プログラム→Windows の機能の有効化または無効化で

.Net Framework 3.5 チェックして、OKを押すとインストールされます。

RelaxTools の擬人化について

$
0
0

RelaxTools の擬人化について

【お知らせ】この度、RelaxTools Addin はブランドイメージを一新、擬人化キャラクター作成に着手、なんと擬人化キャラを筒井.xls(@Tsutsui0524)さんに描いていただきました。 今後、ホームページ、公開資料等、グッズ作成に展開していきますのでお楽しみに。

なお、4.28.0以降では、「ファイル」→「RelaxTools Addinについて」の情報にて擬人化キャラ(RelaxToolsちゃん)が表示されます。

なお、筒井.xls さんのサイトはこちら(関数ちゃんブログ)です。

RelaxToolsちゃんの紹介

RelaxToolsちゃんの秘められた能力が今、明らかに!!
いろいろなディティールが盛り込まれていますが、その一部を公開!

ステッカーの販売

$
0
0

ステッカーの販売

ステッカーの販売を始めました。suzuri だとお安く提供できないので、別途作成、Base で手売りを始めました。

リラックスツールズストア in Base

https://relaxtools.base.shop/items/68019663

Excel 2019対応&バグ修正

$
0
0

Excel 2019対応&バグ修正

最近やっと Excel 2019 に触る機会があり、RelaxTools Addin での動作確認が取れました。

遅くなってすみません、来年にはそのうち、Excel 2021が出てくるんでしょうね。。。

と、いうわけで、サイトやgit hub 、プログラムに関して表記の修正をしました。

2010ももうすぐサポート切れですが、しばらくは残しておきますか。。。(消すのが面倒なだけ)

また、今回ちょっとバグ修正が入っています。A1保存で、もともとA1を含んだ選択範囲があったばあいにA1のみにならないという不具合を修正しています。よかったら最新版をどうぞ。

https://github.com/RelaxTools/RelaxTools-Addin/releases/tag/4.25.5

Viewing all 179 articles
Browse latest View live