• ベストアンサー

マクロに割付られているショートカットの取得方法

マクロに割付られているショートカットを取得する方法を教えて下さい。 マクロにショートカットを動的に割当てるのは下記方法ですが Application.MacroOptions Macro:="Macro1", ShortcutKey:="a" 既に割り当て済みのショートカットはどのように取得するのでしょうか? 目的: 沢山のショートカットを使うのですが、キーボードが限られているので、使用場面に応じて割当てるショートカットグループを変更しようと思っています。 それで、立ち上げ時にショートカットに何が割り当てられているか表示させる為です。 よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 >エラー個所:With ThisWorkbook.VBProject >実行時エラー'1004' >「プログラミングによるVisual Basicプロジェクトへの信頼性に欠けます」 それは、ツール-マクロ-セキュリティ-信頼できる発行元 □Visual Basic プロジェクトへのアクセスを信頼する。 にチェック(レ)を入れてください。

believe_me
質問者

お礼

実行できました。 プロパティを見るものばかりと思っていましたが、こう言った方法もあるのですね。 今回はショートカットが定義されているかどうかを調べるのが目的でしたが、これを使えば何が定義されているかも分かりますね。 詳細なご説明、ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 これは、あくまでも、マクロ-オプションからショートカットを設定したものに対してのみ検索できます。 Sub GetShortCutKeys() 'v.2659901_01 '現在の設定は、自ブックに限る Dim DefPath As String Dim FNo As Integer Dim LineBuf As String Dim i As Integer Dim buf() As String Dim bufName As String Dim bufKeyName As String Dim vbc As Object Const AT1 As String = "Attribute " Const AT2 As String = "VB_Invoke_Func =" Const TMPF As String = "Temp1.bas" 'テンポラリ出力ファイル DefPath = ThisWorkbook.Path & "\"  With ThisWorkbook.VBProject  For Each vbc In .VBComponents  .VBComponents(vbc.Name).Export Filename:=DefPath & TMPF  FNo = FreeFile()  Open DefPath & TMPF For Input As #FNo  While Not EOF(FNo)   Line Input #FNo, LineBuf   If InStr(1, LineBuf, "Sub", vbTextCompare) = 1 Then    bufName = Mid$(LineBuf, InStr(LineBuf, "Sub") + 4)   End If   If InStr(LineBuf, AT1) = 1 And InStr(LineBuf, AT2) > 0 Then    ReDim Preserve buf(i)    bufKeyName = " : Ctrl + " & Mid$(LineBuf, InStrRev(LineBuf, "=") + 3, 1)    buf(i) = bufName & bufKeyName '配列出力        'Debug.Print bufName; bufKeyName    'Debug.Printへ"    i = i + 1    bufName = ""   End If   LineBuf = ""  Wend  Close #FNo  Kill DefPath & TMPF  Next  End With  MsgBox Join(buf, vbCrLf)   End Sub

believe_me
質問者

お礼

回答ありがとうございます。 実行すると下記エラーがでますがどうしてでしょうか? エラー個所:With ThisWorkbook.VBProject 実行時エラー'1004' 「プログラミングによるVisual Basicプロジェクトへの信頼性に欠けます」

関連するQ&A

  • Excelマクロ教えてください。

    いつも大変お世話になっております。 あるシートにあるフォントのすべてをMSゴシックにしたいのですが、 マクロ記録→全選択してフォント変更→記録解除 で下記のマクロができました。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/11/21 ユーザー名 : TEST ' ' Cells.Select With Selection.font .Name = "MS ゴシック" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub 全選択せずに、あるシートすべてのフォントを変更する方法はありますか? シートのフォントを変更するだけの目的です。 よろしくお願いします。

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • Excel で日付入力したらマクロが動く方法

    Excel 2003 です。(OSはXP) データ用のエクセルファイルからマクロでコピー貼り付けをする日報ファイルを作っています。構成シートが7枚、マクロは12モジュール、ファイルサイズが140MBという巨大なものです。 セルB2に日付を入力したとき、Macro1が動くようにしたいのですが、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$2" Then Exit Sub Else... 以外に何かうまい方法はないでしょうか? セルに値を入力、じゃなくて、何かのコントロールでもかまいません。 マクロで日付を読み込めることが必須条件です。 上述のマクロの活用方法はいろいろ読みましたが、処理に時間がかかって困っております。「全てのセルに変更が加えられたのを検知」するしか方法はありませんか? 一応、この Macro1 を呼び出す部分以外には Application.EnableEvents = False を入れて、Worksheet_Changeが反応しないように止めていますが、遅いような気がします。(計ったわけではないのですが。) この日報ファイル自体が、計算の塊で、1つのセルに数値を入力しただけで、再計算に1秒前後かかることがあります。 そこで、貼り付けのマクロ(Macro2)を動かすときには Application.Calculation = xlManual を入れたりもしているのですが(それでも貼り付けに1分30秒)、常に再計算をOFFにするわけにもいかず・・・。 だから「全てのセルに変更が加えられたのを検知」という命令は、時間短縮のため避けたいのです。 また、マクロの全てにEnableEventsを入れておくのも、見苦しくて。(新たにマクロを追加したらまた忘れずにEnableEventsを書かないといけない構造にしたくありません。) 「全てのセルに変更が加えられたのを検知」ではなく、特定のオブジェクトに日付が入力された・選択されたのをマクロの開始合図とすることはできませんでしょうか? 質問がわかりにくかったらすみません。よろしくお願いします。

  • ショートカットが使えません

    ある日突然、デスクトップに置いてあるショートカットが全てウインドーズマークのアイコンになっていました(タスクバー内のクイックランチも同様です)。 とりあえず、タスクバーのIEへのショートカットのプロパティを見てみると 拡張子は[.lnk]でリンク先も正しいものが表示されます。 しかし、ショートカットからアプリケーションを開くことができません。 アイコンをIEのものに変更したところ、PC内の全てのアイコンが一括でIEのアイコンに変わってしまいました。その後、アイコンの変更は全く反映されなくなりました。 新たにショートカットを作成したところ、別のアプリケーションのショートカットでもIEアイコンになりやはり正しいリンク先なのに起動することがせきません。 復旧の方法を教えていただけないでしょうか? よろしくお願いいたします。

  • Excelで複数のマクロを一本化する方法

    Macro5とMacro6を組み合わせて下記のような処理をさせたいのですが方法がわかりません。 お知恵をお貸しください。 1 日付を確認する 2 Macro6でコピー 3 日付にあわせてMacro5で貼り付け   今日が1日ならC14から貼り付け   2日ならC25から貼り付け   3日ならC36から貼り付け    ・      ・    ・   31日ならc344から貼り付け 作成したマクロ ' Macro5 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+r ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub Sub Macro6() ' Macro6 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' Range("C2:AD12").Select Selection.Copy End Sub

  • 秀丸マクロについて

    1行目から3行目までを1、4行目から6行目までを2、7行目から9行目までを3、と3行で1増えていくような数値を出力するマクロを書きたいと思います。 [作成したいデータ]------------------ 1, 1, 1, 2, 2, 2, 3, 3, 3, 4... ------------------------ 下記のマクロの<>部の記述方法をアドバイス下さい。 [Macro]------------------------------- disabledraw; gofiletop; #a =1; while(#a < 100){ insert <aを3で割った整数部+1> insert "\n"; #a=#a+1; } enabledraw; endmacro; -------------------------------------- 他によい案があればそれでも結構ですが。。 宜しくお願いします。

  • MacOS10.5ショートカットについて

    お分かりになる方お願いします。 最近使い始めたMacOS10.5を使用しています。 キーボードのショートカットがうまくいかないのですが ひらがな入力と英字入力を変換する際に普通は 「コマンド」+「スペース」で切り替えができるはずなんですが それが出来ずイライラしてます。 システム環境設定を探してもキーボードのショートカット変更できる 場所がなく、「環境設定」→「キーボード」→「キーボードショートカット」 は出てきますが、特に追加したり変更したりできません。 他に方法があるのでしょうか?それともこのMacがおかしいのでしょうか? 今まで別の人が使っていたものを使っているので詳しい事がわからないのですが。。。 どなたかお分かりになる方いらっしゃいましたらお願いいたします。

  • マクロ

    下記のマクロがあります。 filname = Application.GetSaveAsFilename("テスト","Microsft Excelブック *.xls,(*.xls)", 1, "データファイルを保存") filnameには絶対パスとファイル名が取得されると思うのですが、 それを分けて取得したいのです。 分けて取得は出来るのでしょうか。 一旦filnameで取得しておいて、 それから分ける、という方法が一番ベストなのですが…。 どなたかご存知の方ご教授願います。 宜しくお願い致します。

  • A4サイズでの写真割付の応用

    EP-801Aを使用しています。A4サイズで8面、16面の写真割付を作成していますが、出来れば情報を入れたいのですが、方法、又はソフトがあったら教えてください。又均等割付で大きさの変更が出来る方法、ソフトがありましたら、以上2点よろしくお願いします。

  • Excelでマクロを使いセルの内容をコピー貼り付け

    A1セルに111と入力してあるとします。 この時B1にaaa111aaaと入力するマクロを作りたいです。 A1に222があるとB1はaaa222aaaと入力したいです。 これをマクロで作ったのですが、次のようになり、A1の内容にかかわらず常にaaa111aaaとなってしまいます。 Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "111" Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Range("B2").Select Application.Goto Reference:="Macro2" End Sub これのいらない行を削除し、コピーはA1の内容となるように修正して次のようにしました。 Sub Macro1() ActiveCell.FormulaR1C1 = Range("A1") Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Application.Goto Reference:="Macro2" End Sub まだペーストするときにA1の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか?

専門家に質問してみよう