0

Office2010の舞台裏のタブにある一連のボタンにアタッチされるマクロを作成しようとしています。クリックしたボタンに応じて、マクロをさまざまなパラメータで呼び出す必要があります。

私が抱えている問題は、マクロがパラメータを持つものとして定義されている場合、VBAはマクロがリストされていない[マクロ]ダイアログボックスを表示することです。宣言からパラメーターを削除すると、マクロを実行できるようになりますが、意味のあるマクロが必要です。

使用されているVBAは次のとおりです。

Sub NewDocs(docType As String, docTemplate As String)
   Dim sMyShellCommand As String
   sMyShellCommand = "C:\NewDocs.exe " & docType & docTemplate
   WordBasic.Shell (sMyShellCommand)
End Sub

何か案は

4

3 に答える 3

1

私があなたの質問を正しく持っているなら....

[マクロ]ダイアログボックスにはパラメータを入力する場所がないため、パラメータを含むマクロは表示されません。

ダイアログボックスに表示したい場合は、必要な関数を列挙できます(大きな数ではないことを願っています)。

例えば、

Sub NewDocs1
  Dim docType As String
  Dim docTemplate As String

  docType = "the type you want"
  docTemplate = "the template you want"

  NewDocs docType, docTemplate
End Sub

さらに、質問で言ったように、ボタンが押されたときにマクロを実行する必要がありました。その後、ダイアログボックスにマクロを表示する必要はありません(これにより、労力を節約できます)。正しいパラメータでボタンに関連付けるだけです。

于 2011-03-03T14:20:41.700 に答える
1

マクロダイアログから引数を渡すことができます。たとえば、このマクロがある場合

Sub myMacro(n As Long)
    MsgBox n
End Sub

実行するには、次のように入力します

mymacro 1000

...そして実行ボタンを押します。

于 2011-05-29T22:43:38.627 に答える
0

UIコンポーネントからパラメーターを使用して関数またはサブを呼び出すことはできません。パラメーターを使用せずに、サブを呼び出すだけです。最善の解決策は、関連付ける必要のあるボタンごとにパラメーターのないサブを作成し、パラメーター化されたサブまたは関数を各サブの内部から呼び出すことです。

于 2011-03-04T16:24:43.327 に答える