• ベストアンサー

マクロのボタン名設定方法

お世話になります。 マクロのボタン名を 別のファイルのセルの値に設定したいとおもい プログラムを組んでいるのですが、うまくいきません。 CommandButton1をクリックしCommandButton2へ表示 Private Sub CommandButton1_Click() Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption End Sub や Private Sub CommandButton1_Click() Worksheets("Sheet1").CommandButton2.Caption = _ Application.ExecuteExcel4Macro("'C:\[file.xls]Sheet1'!" & Cells(1,1 ).Address(, , xlR1C1)) End Sub などといろいろ試しているのですが、 「インデックスが有効範囲にありません」 とエラーがかえってきます。 そもそもボタン等のプロパティにセットしようとしているのがいけないのでしょうか・・・。 どなたかご教授お願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption セルの情報(データや書式も含めて)をコピーしてもボタン名にセットできません。 相手が「セル」の場合のみ有効です。 Worksheets("Sheet1").CommandButton2.Caption = Workbooks("file.xls").Worksheets("Sheet1").Range("A1").text などのようにセット(代入)します。 このとき、file.xls が開かれて居ないとエラーになります。 それを避けたいなら、適当なセルにfile.xlsの任意のセルへのリンク式を設定しておいて、データの更新を行った後、そのセルの値を参照してください。

miammi
質問者

お礼

ありがとうございます。 ご指摘を元に作成してみたところ、思うような結果になりました。 本当に助かりました。

その他の回答 (2)

noname#123709
noname#123709
回答No.2

以下のような感じでよいかと思います。 双方のファイルが同じフォルダ内にあるものとしてのサンプルです。 適所修正して下さいね。 Private Sub CommandButton1_Click() Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & "Book1.xls" With Workbooks("book2.xls").Worksheets("Sheet1") Workbooks("book1.xls").Worksheets("Sheet1").CommandButton2.Caption = .Range("A1").Value Workbooks("book1.xls").Close (True) End With End Sub

miammi
質問者

お礼

ありがとうございます。 ご指摘を元にプログラムを組んだところ、うまく表示することが出来ました。 本当にありがとうございました。

  • nov-d
  • ベストアンサー率36% (51/140)
回答No.1

Workbooks("c:\file.xls")...の前に、1回「c:\file.xls」ファイルをオープンしないといけないのでは?

miammi
質問者

お礼

ありがとうございます。 ご指摘を元に早速プログラムを組みなおしてみます。

関連するQ&A