他ブックのセルの値をリンクさせたい

このQ&Aのポイント
  • Excel2007でマクロ作成中の初心者です。常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。
  • ブックAを開き、出てきたフォームの中のコマンドボタンを押して、ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。
  • どのようにしたらリンクできるでしょうか。
回答を見る
  • ベストアンサー

他ブックのセルの値をリンクさせたい

Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

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

  • ベストアンサー
  • ne160257
  • ベストアンサー率20% (4/20)
回答No.1

参照先のブックは必ず開く必要ありますか? セルに値を表示するだけなら、セルに数式として外部ファイルのセルを参照して表示可能です。

aitaine
質問者

お礼

貴方様のご回答をもとに、いろいろ検討の結果思うとおりにできました。ありがとうございます。

関連するQ&A

  • テキストボックスの値を他のブックのセルで表示したい

    EXCELsolo365 Windows10です (1)A.xism を開くとユーザーフォームが開く (2)そのユーザーフォームにテキストボックス設置 (3)テキストボックスに2020/04/20と入力 (4)セル”A1”にも2020/04/20が表示される これを、他ブックB.xlsmのセル ”U2”に直接リンクして 表示したいです。よろしくお願いします。 マクロの記録でやると、「worksheetクラスのPasteメソッドが 失敗しました。」のエラーが出てしまします。 Sub test() Workbooks.Open Filename:=ThisWorkbook.Path & "A.xlsm" Windows("A.xlsm").Activate Range("A1").Select Selection.Copy Windows("B.xlsm").Activate Sheets("CC").Select Range("D1").Select ActiveSheet.Paste Link:=True End Sub

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • ブックの終了がうまくいきません

    Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • シートが表示された時にメッセージを表示したい

    win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで  ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。

  • VBA 複数のBOOKの連続操作

    いつもお世話になっております。 複数のブックの更新操作についてわからないことがあります。 複数のブックには項目別のWEBクエリが設定されており、 更新の際にはその都度ブックを開いた上更新しています。 BOOKは4つあり、 BOOK1のコマンドボタンからBOOK2~BOOK4までの更新を実行したいと思っています。 下記のように作ってみたのですが、 BOOK2を更新して閉じた後、BOOK3への処理はスルーされています。 エラーが出るわけではないのですが・・・ 素人のため、説明も要所を得ていませんが、 どうかお力を貸していただけないでしょうか? 下記 BOOK1のマクロ Private Sub CommandButton9_Click() 'ブック2を開いてWEBクエリ更新 Workbooks.Open Filename:="D:\TestBook\test.xlsm" WBN = ActiveWorkbook.Name Application.Run "'" & WBN & "'!Module3.更新して閉じる" 'ブック3を開いてWEBクエリ更新 Workbooks.Open Filename:="D:\TestBook\test2.xlsm" WBN = ActiveWorkbook.Name Application.Run "'" & WBN & "'!Module3.更新して閉じる" End Sub BOOK2~BOOK4 Module3 Sub a1() ' エラーメッセージを表示する(On Errorステートメント) On Error GoTo Err '-------------------------------------------------------- 'webクエリ更新 Range("B6").Select Selection.QueryTable.Refresh BackgroundQuery:=False ’中略 'エラーならブックを上書き保存して閉じます Err: Sheets("sheet1").Select Range("C2").Select Selection.ClearContents Range("P3").Select If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If ActiveWorkbook.Close End Sub 宜しくお願いいたします。

  • シートを他のブックに貼付けたい

    Excel2007でマクロ作成中の初心者です。 やりたいことは 1)本ブックの中の「当月売上」シートを他ブックに貼付けたいです。 2)他ブックに貼り付けた「当月売上」シート名は、セルK1の日付に変更したいです。 すると、他ブックのシートが毎月順に、売上(2012年4月) 売上(2012年5月) 売上(2012年6月)というふうに増えます。 3)何月に作成しても、ブックの「当月売上」シートを貼り付けます。 四苦八苦して以下のコードをつくりましたが、「同じ名前のシート名に変更できません。」 というエラーがでるので、このエラーが出ないように、名前が同じ時は上書き保存し、違うときは新しいシート名を作るという コードにしたいです。困ってます。どうかご指導お願いします。 Sub 売上シートの貼付け() Dim WBK1 As Workbook ' 本ブックの Dim WBK2 As Workbook ' 貼付け先他ブック ChDir ThisWorkbook.Path + "\売上" On Error Resume Next Set WBK2 = Workbooks("24年度売上.xls") On Error GoTo 0 If WBK2 Is Nothing Then Set WBK2 = Workbooks.Open(ThisWorkbook.Path & "\売上\24年度売上.xlsm") End If Worksheets("当月売上").Copy After:=Workbooks("24年度売上.xlsm").Sheets(Workbooks("24年度売上.xlsm").Sheets.Count) ActiveSheet.Name = Format(Range("K1").Value, "売上(yyyy年mm月)") Application.DisplayFormulaBar = True WBK2.Close SaveChanges:=True Application.DisplayAlerts = True Set WBK2 = Nothing End Sub

  • 窓からファイルを開くときフォームも表示したい

    Excel365solo,windows10を使っています。VBA超初心者です。 現在以下のコードで作業しています。 マクロ記述ブックAに、ユーザーフォームBをつくりコマンドボタンCを設置しました。 Private Sub 基礎データCボタン_Click() Unload Me Workbooks.Open Filename:=ThisWorkbook.Path & "\2年度\計算5月.xlsm"  ’このブックが開いた時に、自動で開いた複数のコマンドボタンDで処理 End Sub これを窓から選んでブックを選ぶ方式にしたいです。 Private Sub testボタン_Click() Dim OpenFileName As String ChDir Application.ThisWorkbook.Path & "\2年度" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub でも、ブック\2年度\計算5月.xlsmは開きますが、ブックが開いた時「複数のコマンドボタンD」が表示されず困っています。これを表示させるようにしたいです。ご教示よろしくお願いします

  • 他のフォルダにあるファイルからユーザーフォーム表示

    現在(1)の方法でやってますが、これを (2)の方法でユーザーフォームを表示したいです。この方法するためのコードを教えてほしいです。超初心者なので具体的に教えてほしいです。 (1)デスクトップにフォルダ「A処理」があり、開くとB.xlsm とC.xlsm 二つのファイルがあり、C.xlsm を選ぶと同時にユーザーフォームが開きます。 (2)デスクトップにフォルダ「A処理」があり、開くとB.xlsm とフォルダ「A 計算」があります。フォルダ「A計算」の中に、C.xlsm があります。 B.xlsm を選ぶと、ユーザーフォーム(表紙)が表示され、その中のコマンドボタンを押すと、フォルダ「A計算」の中のC.xlsm が表示されますが、ユーザーフォームは、ひらきません。 そのコマンドボタンには、次のコードが入っています。 Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\A計算\C.xlsm" load UserForm1 UserForm1.Show Sheets(1).Select End Sub

  • 他ブックを実行するマクロ

    あるexcelファイル(ブック名「自動操作.xlsm」)からべつのexcelファイル(ブック名「a.xlsm」)というファイルを実行するマクロを組んでいます。 Application.Runを用いて「自動操作.xlsm」のコードを以下のように記述しました。 ※「\」は半角の円マークだと考えてくれればいいです。ここで半角の円マークをかいても\と表示されます。また、自動操作とaは同じディレクトリにあります。 Sub Test1() Application.Run "'C:Users\ディレクトリ名\a.xlsm'!test" End Sub また、「a.xlsm」は以下のように記述しました。 Sub test() Dim i As Integer For i = 1 To 5 '移動元ファイルパスの設定 Cells(i, 1) = i Next End Sub ただ1~5行にその行数を記入するマクロです。 a.xlsmを開いた状態でこれを実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 a.xlsmを閉じた状態で実行すると、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」とでます。 いったいなにを間違えているのでしょうか。