昨日見た夢を教えて下さい

データ置換用のマクロを作成したいと思っています。

マクロ有効ブック内の「変換ルール」シート上に、
A列、B列に
変換前、変換後
(株)、株式会社
(有)、有限会社
〒、郵便番号
電話、電話番号



のようにルールを記載しておき、
このマクロ有効ブックを開いたままにしておいて、
別のブックを開いて、
任意のセルを範囲指定してこのマクロを実行すると、
選択範囲内のセルだけ変換ルールに従って書き換えられていくようにするにはどうしたら良いでしょうか?
ヒントだけでもいただけると助かります。

質問者からの補足コメント

  • WindFallerさん
    書き込みを読んでいてふと気になったので補足します。
    インストーラを使うタイプはNGです。
    今の作業環境ではソフトのインストールは禁じられていますので、せっかく頂いても残念ながら手をつける事は出来ません。

    改めて簡潔に仕様を述べると、
    「sheet1に記載のルールに従って、
    sheet2の指定範囲の箇所だけ置換する。」
    これを満たすマクロで充分なのです。

    私の深読みなら幸いです。
    よろしくお願いします。

      補足日時:2018/03/25 02:13

A 回答 (12件中1~10件)

思うことがあって、もう一度、マクロコードを見直しますので、しばらく開けておいてください。



理由は、もともと、同系のマクロを今回偶然にも作ったことがきっかけで発言したのですが、それにも関わらず、私が使っているアドインマクロと、今回のものとの終了時の挙動が違うのです。コードをみると、ThisWorkbookと標準モジュールのコードの配置や組み立ての違いがあります。また、Edit Boxについても、もっと別な方法があるように思います。いろいろ確認するべき点が残されているように思っています。
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。
もちろん開けておきます。
無理しないでくださいね。といいながら期待してます。

お礼日時:2018/04/05 00:28

返事が遅くなってすみません。



こちらでは、zipの拡張子でなかったたので、おそらくセキュリティのツールが自動的に働いたものだと思います。

>「Microsoft\AddIns」配下には置かない運用で行きたいと思います。危険だったらご指摘ください
特に問題はありません。ただ、セキュリティを強化しようとして、デジタル署名を入れるのは逆にできません。デジタル署名を入れると、封印したことと同じですから、書き入れがきかなくなります。

>閉じて、別の関係ないブックを開くとアドインが現れないのでクリーンな使い方ができそうで逆に都合良いです。

たぶん、これはバグだと思います。単に、アドイン内の項目が消えてしまっているだけではないかと思います。ここは、調べてみます。

それと、マクロプロジェクトのオブジェクト名は、VBAProject になっていないのは、他のプロジェクトとぶつからないためです。細かなワザがいくつか入れてありますので、参考にしてみてください。

>「リスト表示」を押すたびにシートが作成されていきますね。※修正依頼ではありません、気になさらずに。
Workbooks.Add で作る方法もあったのですが、私の頭の中では、挿入前・挿入後の後始末が意外と面倒だと思ったからです。また、本来は、Active X のWeb スプレッドシートが使えればよいのですが、確か、なくなってしまったと聞いていたので、使いませんでした。しかし、同じブックには2つのシートを挿入できないようにも作れます。

また、IsAddin 自体をいじるのはやめることにしました。エクセルは思わぬトラブルが発生することがありますから。

>VBEから、Workbook_AddinInstall、Executabele、Initiation等などが参照できますが、それ以外に見えないソースがあるのですか? 
以下で述べる、Ariawase というツールは、ソースだけでファイルを作ってしまいます。見えない部分というのはほんとんどありませんが、元が多少の約束事があるようです。

>エクセルではなくexe、com等のようにアプリ化してしまうということですか?
ただのアセンブリですから、exe、com とは違いますが、テキストファイル・ソースが、エクセルファイルに変わります。私は、ずっと自力で考えていたのですが、それを発表した人がいます。

それそのものは、あまり役に立つツールとは言えませんが、このソースをデータベース化させることが目的だそうです。
https://github.com/vbaidiot/Ariawase

また、エクセルのアドインにまつわる新しい技術を紹介させていただきます。
今、新しいアドインは、ワークシートにドラッグして使うExcel DNAというアドインがあります。まだ、私には扱いきれませんが、このアイディアもユニークです。

https://github.com/Excel-DNA/ExcelDna

>エクセルの枠を超えて意味深で興味深いです。質問の領域を超えてしまいますね^^;
進んでいる人たちは、どんどん先に行っているのですが、追いかけていくのもなかなか大変です。

>WindFallerさんの活動が見えるサイト等あれば覗きに行きたいです。
ありがとうございます。ただ、私は、今は、ほとんど、どこにも書いていません。

なお、もう少し挙動をみて不具合がないかを調べたほうがよいと思います。
    • good
    • 0

こんにちは。



返事が遅くなり申し訳ありません。メインのPCを初期化したあとに、リストアしながらマクロを作っている最中です。
https://bit.ly/2DWX67a
ここにアップロードしました。

パスワードは、ここのスレの URLの /qa/のあとの8桁の数字です。
ダウンロード後は、必ずプロパティで、ブロックを外してください。

期間は2週間ですが、バグが潜んでいる可能性はあります。まずは、試験コードというところです。

なお、ソース・ファイルとしてお渡しすることも可能です。
その場合は、手動でも可能ですが、Ariawase GUI というツールを使い、アセンブリすると便利です。一瞬でファイルに変わります。

-----------------------------------
アドイン名:一括置換アドイン
ファイル名:ReplaceWords.xlam
動作試験は、
Windows10 32 bit Excel Ver2010
Windows10 64 bit Excel Ver2013
ウィルス検査は、マカフィーで調べてあります。

アドインの入れる場所は、%APPDATA%\ADDIN
例: C:\Users\(UserID)\AppData\Roming\Microsoft\AddIns\

「略名置換」というコマンド名はさすがにできあいで、すっきりとはしていませんので、必要に応じて、中は直していただいて構いません。

リスト表示で、一覧を出して、リスト保存で、アドインの中身が書き換わります。
Edit ボックスに、「Ctrl + r」 ショートカットがありますが、v, c, p,s などは、設定できないようになっております。
デフォルトが、Ctrl + r ですが、このデフォルトを直したい場合は、中身から書き換えたほうが良いと思います。
Edit ボックスは、臨時的な要素が強いです。

コードには隠しマクロがあって、一つは、Sub AllReset() というマクロで、メニューが残ってしまった場合。もう一つは、Sub ReplacingWords2() というマクロで、二重置換をさせないマクロです。
出来れば、正規表現の置換のマクロも含めたかったのですが、これ以上は時間をかけたくないので、やめました。

これらは、あくまでも、私の好みが入っていますので、気に入らないかもしれません。
-----------------------

また、本来は、リボン・カスタマイズしてメニューに調整したいところですが゛、現在、メインのPCは、初期化したばかりで、バックアップから引っ張りだしたアプリがまだ出そろいませんし、時間もかかってしまいます。それと、今回は、旧式のアドインスタイルです。今、アドインは、COM型に変わりつつあるようです。
    • good
    • 0
この回答へのお礼

初期化の最中、お気遣いいただき、ありがとうございます!
ダウンロードして動作確認しました。

ダウンロードするとZIPファイルでしたがそれを解凍するとxmlファイルやらなにやらが格納されたフォルダになってしまいました。
今のエクセルの構造ですね。
解凍せずに、拡張子をzip→xlamにリネームするだけで使えるようになりました。これに関して、もしも補足などあればお願いします。

原理についてはまだ分からない部分が多いのですが、にわかの理解は、
好きな場所に保管しておいて、使いたいときにダブルクリックすればアドインタブが現れる、という使い方ができそうです。
閉じて、別の関係ないブックを開くとアドインが現れないのでクリーンな使い方ができそうで逆に都合良いです。
「Microsoft\AddIns」配下には置かない運用で行きたいと思います。危険だったらご指摘ください。

気になった点。
「リスト表示」を押すたびにシートが作成されていきますね。※修正依頼ではありません、気になさらずに。
「リスト保存」をどのシートで押すと適用されるかが不明でした。

>なお、ソース・ファイルとしてお渡しすることも可能

VBEから、Workbook_AddinInstall、Executabele、Initiation等などが参照できますが、それ以外に見えないソースがあるのですか?


>アセンブリすると便利です。一瞬でファイルに変わります。

コンパイルではなく?一瞬でファイルに変わるというのは、エクセルではなくexe、com等のようにアプリ化してしまうということですか?
エクセルの枠を超えて意味深で興味深いです。質問の領域を超えてしまいますね^^;
WindFallerさんの活動が見えるサイト等あれば覗きに行きたいです。

お礼日時:2018/03/28 10:52

No.8です。



> マイアドイン.xlsm 上の置換ルールシートの右に新規シートを作ってそこで範囲指定してマクロ実行しても置換されないのは何故でしょうね?


これは変換対象が「マイアドイン.xlsm」の場合は何もしない様にマクロに書かれているからです。

  If ActiveSheet.Parent Is ThisWorkbook Then Exit Sub '自分で自分を消さない

「変換表」の内容を選択して変換してしまうという、うっかりミスを防止する為と思われます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
「自分で自分を消さない」ってそういう意味だったんですね。
改めてソースを見ると、確かにそう読み取れました。納得。

自分に分かり易いように「このマクロブック上では置換を実施しないようにする」等に変えておきます^^;

お礼日時:2018/03/26 13:12

こんにちは


割り込み失礼いたします。

最終的にすばらしいものを提示いただけるのかもしれません。
しかしながら、現状、状況が迷走気味なので
それまでの間のつなぎとして私自身、勉強させていただきながらまとめた手順を提示させていただきます。
私の環境(Excel2010/2016)ではこれで動作しました。

質問者様におかれまして、ご参考にしていただければ幸いです。

※ 回答1~3までに範囲です、回答N0.4以降はとりあえず無いものとしています。


手順

1.「マイアドイン.xlsm」の作成(実際にはお好きなファイル名で結構です)
 アドインを作成するためのマクロ付ファイルを新規に作成します。

 1-1 VBEを開いて「マイアドイン.xlsm」に回答No.1~3のソース(下に提示)を書きます
   ReplacingWords()、SetShortCuts() を標準モジュールに書く
   Workbook_Open()、Workbook_BeforeClose(Cancel As Boolean)をThisWorkbook モジュールに書く

 1-2 変換表を「マイアドイン.xlsm」のSheet1に作成する
   A1セル:「変換前」(空白でも良い)
   B1セル:「変換後」(空白でも良い)
   実際の語句は、A2/B2セルから記述していきます。


2. アドインの作成
 1.で作成したファイルを「マイアドイン.xlam」(名前は変更可)としてアドイン形式で名前を付けて
 AppData\Roaming\Microsoft\AddInsに保存します。

 保存したら、「マイアドイン.xlsm」は保存して閉じて下さい。


3. 変換を行いたいエクセルファイルを開く
  (仮に「ターゲット.xlsx」とします)

 3-1 「ファイル」→「オプション」→「アドイン」→「設定」で
   メニュー内に2.で作成した「マイアドイン」が表示されているのでチェックをいれ有効にする。
   (この作業はファイル毎ではなく、最初に1回行えばよいです)

  これで
  リボンのアドインタブに「略名置換」が表示されるはずです。

  ※表示されない場合は、「ターゲット.xlsx」を一旦保存終了して、再度開いて下さい。
  ※リボンのアドインタブを表示しない設定にしてあると上手くいかないので
   予め表示する設定にしておいてください。


4.変換の実施
 ここまでで、「ターゲット.xlsx」のみ開いていて、リボンに「略名置換」が表示されています。
 変換の実行は以下の2つのいずれかの方法で実施します。

 4-1 変換対象のセルを選択した状態で、リボンの「略名置換」をクリック
 4-2 変換対象のセルを選択した状態で、CtrlキーとAltキーとRキーを同時押しする


5. アドインを削除する場合
 リボンのアドインタブで「略名置換」を右クリックしたメニューから削除
 3-1項のチェックを外す


手順は以上です。


変換表を更新したい場合は、3-1項のチェックを外した上で
1-2項からもう一度作業して「マイアドイン.xlam」を上書きしてください。

アドインファイルを直接変更する方法も提示いただいていますが
質問者様におかれましては、ここまでの方法で作業された方が混乱がないと思います。




余談ですが、アドインを作成しなくでも

1. 「マイアドイン.xlsm」と「ターゲット.xlsx」を両方開く
2. 「ターゲット.xlsx」の変換したいセルを選択
3. 「ターゲット.xlsx」がアクティブのままで
  リボンの「表示」→「マクロ」から「ReplacingWords」を実行

で、変換は可能です。
この場合は、ThisWorkBookモジュールのプログラムコードは不要です。

「共有フォルダ上から、そのまま使える」について複数人の同時使用の可否は未確認ですが
各PCに「マイアドイン.xlsm」をコピーしてもらえば良いです。
どちらの手段が良いかは、各PCにアドイン設定する手間との兼ね合いですね。


以上、ご参考まで。



「マイアドイン.xlsm」
標準モジュール
-----ここから
Sub ReplacingWords()
  Dim Rng As Range
  Dim SrcRng As Range
  Dim c As Range
  With ThisWorkbook.Worksheets(1) 'Index で付けた方が安全です。
    If ActiveSheet.Parent Is ThisWorkbook Then Exit Sub '自分で自分を消さない
    If Selection.Cells.Count = 1 Then
      Set Rng = ActiveSheet.UsedRange
    Else
      Set Rng = Selection.Cells
    End If
    Set SrcRng = .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
    For Each c In SrcRng
      Rng.Replace c.Value, c.Offset(, 1), xlPart, xlByRows, False, False
      '大文字・小文字の区別なし、全角・半角の区別なし
    Next
  End With
End Sub

Sub SetShortCuts()
  Static flg As Boolean
  'ショートカットの設定
  With Application
    If flg = False Then
      .OnKey "^%r", "ReplacingWords" 'Ctrl+ Alt + Rで置換起動
      flg = True
    Else
      .OnKey "^%r" 'ショートカットを消去する
      flg = False
    End If
  End With
End Sub
-----ここまで


ThisWorkBookモジュール
-----ここから
Private Sub Workbook_Open()
  Dim myCB
  Set myCB = Application.CommandBars("WorkSheet Menu Bar")
  On Error Resume Next
  myCB.Controls("略名置換").Delete '下記で登録する名称
  On Error GoTo 0

  With myCB.Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
    .Caption = "略名置換" '名称は任意です
    .OnAction = " ReplacingWords" 'マクロ名
    .TooltipText = "略名置換" '説明文でも可
    .Style = msoButtonCaption
  End With
  Call SetShortCuts 'ショートカットの登録
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim myCB
  Dim i As Long
  Set myCB = Application.CommandBars("WorkSheet Menu Bar")
  On Error Resume Next
  myCB.Controls("略名置換").Delete 'Workbook_Openで使用した名称
  On Error GoTo 0
End Sub
-----ここまで
    • good
    • 0
この回答へのお礼

整理していただいてありがとうございます!
正常動作しました。

これだとアドイン無しで、同時に開くパターンが一番合ってます。
(細かい設定作業やレクチャーなしで多くの人が活用できます。)

マイアドイン.xlsm 上の置換ルールシートの右に新規シートを作ってそこで範囲指定してマクロ実行しても置換されないのは何故でしょうね?

お礼日時:2018/03/26 11:22

昨日(土曜日)、いつもの開発用のコンピュータがMicirosoft アップデートを機に、青息吐息になって、初期化してしまいました。

緊急避難はしてありますが、ちょっと設定に手間がかかっております。

インストラーについては、ちらっと頭には浮かびましたが、ご心配はいりません。アドインはアドインです。インストールイベントというのは、本来、アドインには不可欠で、Open-Close だけでなく、アドインのオプションボタンを押した時に、アドインが働くようにするという仕掛けなのです。

『「sheet1に記載のルールに従って、
sheet2の指定範囲の箇所だけ置換する。」
これを満たすマクロで充分なのです。』
それもありえるのですが、とりあえず、いったん稼働するものを提示します。

実はこの質問は、ワードでよく出てくる内容なのです。Excelで表を作って、ワードの文章の中を置換してください、というのは何度か作っているので、ワードをExcelに変えるだけでよかったのかもしれないとは思いつつも、今回選んだ方法は、アドイン型ですから、若干、それとは違います。今のPCが復旧次第、取りかかります。うまくいけば悪くはないはずですが・・・・。
    • good
    • 0
この回答へのお礼

大変な時に恐れ入ります。
期待してます。よろしくお願いいたします。

お礼日時:2018/03/26 09:59

もう少しお待ち下さい。


もともと、私が、頭の中で温めていたものを、今回、たまたまアドインを作ったこととシンクロしていることですので、私が、わかりきったことだと勘違いしているかもしれません。

アドイン自体をストレージサイトにアップロードします。
もちろん、もう少し完成度の高いものにバージョンアップします。

今のままですと、機能として不足しているものがあります。(つまり、インストールイベントを付けていません) それをふくめたいと思っています。
    • good
    • 0
この回答へのお礼

こちらからお願いしている事ですので、
WindFallerさんに負担がかかるのを申し訳なく思っているだけです。
私としては時間がかかることは気にしていません。
最後までお付き合いする気持ちです。
平日は毎日返信できますのでよろしくお願いいたします。

一応、もう少し詳しく説明させていただくと、
私が今使っているPCをカスタマイズしていきたいわけではありません。
数名のチーム内で業務負担を軽減させるための便利ツールが目的です。
しかも常に特定メンバーではないため、PC毎に導入作業は望みません(できるだけという意味)。
そのため、未知のアドインがちょっと気がかりです。最低限の初期設定なら問題ありません。

今の理想のイメージは、共有フォルダ上から、そのまま使えるマクロブックです。
置換ルール用シートのみ存在するイメージです。
別のブックからデータクレンジングしたいシートを置換ルール用シートの隣のシートに移し、
列単位または任意の範囲指定し、マクロを実行するとルール通りに置き換わる、という感じです。
ですがアドインにすることによって、どのブック上でも直接置換できるのか?と期待はしています。

WindFallerさんの想定と大きくかけ離れてたら無理しないでください。
以上、参考になれば幸いです。

お礼日時:2018/03/23 11:05

#4で書きました「このような方法がご不便なら、アドインのままで、変換データのリストを見えるようにして出す方法も考えてみます。



ということで、作ってみました。今、どこを開いているか認識している限りは、マクロを使う必要はあまりありません。アドインを編集するために、シートを表示させるマクロと、それを閉じるマクロです。

なお、置換マクロの方をもう少し修正したほうがよいかもしれません。
文字が長い順から登録すると書きましたが、必ずしもそうとは言えないこともありますからね。「ルールを記載」とお書きなっておりましたが、それは単なる単語の羅列ではなく、ロジックを考えて挙げなくてはならないように思います。たとえば、二重に置換をしないなど工夫が必要です。


'//
Sub InsideAddinEdit()
'アドインを編集します。
 Dim AddInName As String
 Dim myAddIn As AddIn
 Dim i As Long
 Dim fn As String
 Dim wb As Workbook
 Dim flg As Boolean
 '*アドインのファイル名を入れてください。,パスは不要です。"
 AddInName = "mybbTest.xlam"
 For i = 1 To Application.AddIns.Count
   If AddIns(i).Name Like AddInName & "*" Then
    Set myAddIn = AddIns(i)
    Exit For
   End If
 Next
 If myAddIn Is Nothing Then
   MsgBox "アドイン名が違うか、存在しないかどちらかです。", vbExclamation
   Exit Sub
 End If
 fn = myAddIn.FullName
 For Each wb In Workbooks
   If wb.Name Like AddInName Then
    wb.Activate
    flg = True
    Exit For
   End If
 Next
 If flg = False Then
   Set wb = Workbooks.Open(fn)
 End If
 If wb.IsAddin = True Then
   wb.IsAddin = False
 End If
 On Error Resume Next
 wb.Activate
 wb.Worksheets(1).Select
 MsgBox "アドインファイルがアクティブになりました。" & vbCrLf & _
 "このマクロブックは" & ThisWorkbook.Name & "です", vbInformation
 
 On Error GoTo 0
End Sub
Sub AddinClose()
'アドインを閉じますが、保存は自動でします。
 Dim AddInName As String
 Dim myAddIn As AddIn
 Dim i As Long
 Dim Bk As Workbook
 Dim fn As String
 AddInName = "mybbTest.xlam"
 For i = 1 To Application.AddIns.Count
   If AddIns(i).Name Like AddInName & "*" Then
    Set myAddIn = AddIns(i)
   Exit For
   End If
 Next
 If myAddIn Is Nothing Then
  MsgBox AddInName & "アドインが見つかりません。"
  Exit Sub
 End If
 On Error Resume Next
 fn = myAddIn.FullName
 Set Bk = Workbooks(myAddIn.Name)
 If Bk Is Nothing Then
   Set Bk = Workbooks.Open(myAddIn.FullName)
 End If
 Bk.Activate
 If Err.Number <> 0 Then
   MsgBox Err.Number & Err.Description, vbExclamation
   Exit Sub
 End If
 On Error GoTo 0

 Do Until Bk.IsAddin = True
   ActiveWorkbook.IsAddin = True
 Loop
 Workbooks(AddInName).Save
 MsgBox "アドインのVBEの画面で上書き保存しました。", vbInformation

End Sub
    • good
    • 0
この回答へのお礼

こんなに時間をかけていただいてありがとうございます。

ただ、すみません!↑に書いていただいたソースをどこにどうすれば良いか分かりません。
以前のReplacingWordsはどうなるのか?SetShortCutsはどうなるのか?(私の場合、test.xlsm)
以前のアドインはどうなるのか?(私の場合、test.xlam)
どちらかのソースを上書きするのか、標準モジュールを追加するのか?
訳が分からなくなってきました、というのが実状です。

プログラミングに関してはこんなレベルなので、その辺を察していただけると幸いです。

ちなみに、「文字が長い順から登録するとは限らない」「2重置換に気を付ける」これらは理解していて全く問題ないのでご配慮無用です。
具体的なマクロ、アドイン実行手順についてだけ素人です。

一からやりなおした方が良い気がしますがいかがでしょうか?(No3以前のソース、どれがイキか不明なのです。)
xlsmに入れるもの、xlamに入れるものを改めて貼り付けていただけないでしょうか?

お礼日時:2018/03/22 17:54

こんにちは。



すみません、もう少し辛抱願えますか?

>アドインタブに「略名置換」というボタンができていました。

>test.xlsm のシート「変換ルール」の中には、
>A列に「(株)」、B列に「株式会社」を入力

>隣のSheet2上のA1に「(株)ソニー」を入力し、
>「略名置換」ボタンを押しても、「ReplacingWords」を実行しても何も変化が見られませんでした。

変換ルールの置き場所が、アドインの中に入れるのです。
このアドインは。データを埋め込みして使うものだということでしたが、おわかりにはなりませんでしたでしょうか。アドイン単独で置換が可能なようにしているので、別にリストを作る必要がありません。ただ、書換が、少し面倒になりますが。

それで、通常は開かないアドインシートを、ThisWorkbook プロパティ IsAddin = False にして、シートを開きます。終わったら、プロパティを True に戻します。
そして、VBEdiitor 側から上書き保存をします。

そうすれば、マクロブックでなくても、置換が可能になります。
実行は、アドイン・タブの略名置換のボタン(イメージ画像にも変えられます)やショートカットで実行可能です。

これは、少しややこしいと思います。

マクロを習いはじめて数年の頃の私なら、まさかデータをアドインの中に置くなどということは考えてもみなかったことです。

もし、このような方法がご不便なら、アドインのままで、変換データのリストを見えるようにして出す方法も考えてみます。
    • good
    • 0

すみません、エディタの作ったばかりのマクロが、思わぬバグが出てしまいました。



この掲示板に書かれているままで試してみました。
まだ、間違いがいくつかありました。

'//間違い//
前述の Next 削除

× Cal SetShortCut 'ショートカットの登録 ×
  ↓
  Call SetShortCuts 'ショートカットの登録 (Call, SetShortCuts です。L, S が抜けています。)

× .OnAction = *" ReplacingWords" 'マクロ名
  .OnAction = "ReplacingWords" 'マクロ名 'Replacingの前の半角スペースを抜いてください。
----
'ショートカットの設定
With Application
If flg = False Then
'×  .OnKey "^%r", "ReplacingWords 'Ctrl+ Alt + r '任意(Help参照)*
  .OnKey "^%r", "ReplacingWords" 'Ctrl+ Alt + r '任意(Help参照)
  ''Wordsの後のダブルクォート(") が抜けている
  flg =True 'ここら加える
Else
 .OnKey "^%r" 'ショートカットを消去する
  flg = False '加える
End If
(ReplacingWords の後の"" と、flg =True, Flg=False)

''//変更後は、//
'+++++++++++++++
'ショートカットの設定
With Application
If flg = False Then
  .OnKey "^%r", "ReplacingWords" 'Ctrl+ Alt + r '任意(Help参照)
  flg =True 'ここを加えた
Else
 .OnKey "^%r" 'ショートカットを消去する
  flg = False '加えた
End If
'--------------

>アドインにチェックを入れておきつつ、
>このxlsmブックのsheet1のA列とB列に変換前、変換後の値を列挙しておいて、
>また別の任意のブック上でマクロ「ReplacingWords」を実行すれば、
>範囲指定した個所または範囲指定しなければ全セルを対象として置換してくれる、
>という事で間違いないですか?

拡張子は、xlam 以外は、間違いありませんが、今回は、内容的にミスが多くてすぐには動きませんでした。
なお、変換前・変換後語句を直したり加えたり修正する時は、VBEditor 画面で、ThisWorkbook のプロパティの中のIsAddin を False にすると、シートが見れるようになります。
そして、再び、IsAddin をTrue にしてから上書き保存します。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
私自身、アドインに触れるのがはじめてなものでよく勝手が分かっておりません。

教えていただいた通りに一通り修正したつもりで、エラーは起きなくなりましたが、動作が確認できませんでした。すみません。

マクロ「ReplacingWords」を動かすブックは、test.xlsm としております。
また、アドインタブに「略名置換」というボタンができていました。

test.xlsm のシート「変換ルール」の中には、
A列に「(株)」、B列に「株式会社」を入力

隣のSheet2上のA1に「(株)ソニー」を入力し、
「略名置換」ボタンを押しても、「ReplacingWords」を実行しても何も変化が見られませんでした。

作っていただいた仕様を理解していないのだと思います。
使用方法を教えていただけると幸いです。

お礼日時:2018/03/20 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報