• ベストアンサー

エクセルのマクロ イベントプロシージャについて

エクセルのマクロについて教えて下さい 今 book1を開いたら動くマクロを組んでいます 「Private Sub Workbook_Open()」を 使って 内容は この中で別のブック(仮にbook100とします) を開いてその中のデータ (すでに選択してあります) をコピーして book1に貼り付けて book100を閉じる。 という作業なのですが book100を選択しようとするとエラーが起きてしまいます。 Private Sub Workbook_Open() の中では違うブックに対して 作業ができないようになっているのでしょうか? よかったら御教授ください

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

  • ベストアンサー
  • hiro823
  • ベストアンサー率25% (74/285)
回答No.5

度々、#1, #3のhiro823です。 #4の方のを参考に、ちょこっと開け閉めのトコを作ってみました。 --- Private Sub Workbook_Open() Dim ph1, fnm1, fnm2 As String ph1 = "C:\" fnm1 = "book1.xls" If Dir(ph1 & fnm1) = "" Then MsgBox "ブックが見つかりません", 16: Exit Sub fnm2 = "book100.xls" If Dir(ph1 & fnm2) = "" Then MsgBox "ブックが見つかりません", 16: Exit Sub Msg = "「book100」から読み取りますか?" Style = vbYesNo + vbQuestion + vbDefaultButton1 Msgrec = MsgBox(Msg, Style, Title) Select Case Msgrec Case vbYes: Workbooks.Open Filename:=(ph1 & fnm1) Workbooks.Open Filename:=(ph1 & fnm2) Windows(fnm1).Activate ActiveWorkbook.Close Windows(fnm2).Activate ActiveWorkbook.Close End Select End Sub --- 参考にどぞ。

その他の回答 (6)

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

#2 のレスを読ませていただきましたが、 Windows("book100.xls").Activate ' ...ここでエラーです(実行時エラー インデックスが範囲内にありません) は、 Workbooks("book100.xls").Activate ですね。でも、Activateしなくても、 Workbooks("book100.xls").Close だけでもよいと思います。

  • hiro823
  • ベストアンサー率25% (74/285)
回答No.6

すみません。追記です。 私の方のバージョンは Excel2003です。 # 開け閉めのトコダケなんで、多分?他のバージョンでも大丈夫か、な...?

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

Workbook_Open イベント時で、コピー&ペーストというのは、あまり発想として良いとは思いませんね。コマンド・ボタン等で行ったほうが良いような気がします。 >book100を選択しようとするとエラーが起きてしまいます。 & >book100を閉じる。・・・このときに >エラーが起こってしまいます ?? サンプルを出しておきますので、少し、考えてみていただけますか? Private Sub Workbook_Open() Dim myPath As String myPath = "D:" & "\" Const Fname As String = "Book100.xls"  If Dir(myPath & Fname) = "" Then MsgBox "ブックが見つかりません", 16: Exit Sub Application.ScreenUpdating = False With Workbooks.Open(myPath & Fname)   With .Worksheets("Sheet1")   .Range("A1:A10").Copy _     ThisWorkbook.Worksheets("Sheet1").Range("A65536").End(xlUp).Offset(1)   End With   .Close False '相手のブックを保存しないで閉じる End With Application.ScreenUpdating = True End Sub

  • hiro823
  • ベストアンサー率25% (74/285)
回答No.3

#1のhiro823です。 > book100(ブック)のとあるシートの一部を選択、コピーしてから、book1(ブック)のシートの一部に貼付 ココまでがOKなんですね。 で、ソノ後のbook100を閉じる時がエラーになる、と。 度々補足要求をしてしまいますが、なんていうエラーが表示されているのでしょうか?(エラー番号・メッセージ) また、book100を閉じるのではなく、book1を保存→閉じる、はできますか? あと、Excelのバージョンは? それでは。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

> 違うブックに対して作業ができないようになっているのでしょうか? そんなことは、ないですよ。 質問には、 > book100を選択しようとするとエラーが起きてしまいます。 となっていて、補足には、 > book100を閉じる。・・・このときにエラーが起こってしまいます となっていていますが・・・ まぁ、どのようなコードの何処で、どのようなエラー内容なのかを明示して おりませんので、的確にレスすることは、ちょっと困難と思いますが・・・ >(すでに選択してあります) の意味が解りませんが・・・  ブックを開くのと、範囲指定は手動ということ? まぁ、この内容から言えることは、この位かな? 

ennkai
質問者

補足

Private Sub Workbook_Open() Msg = "「book100」から読み取りますか?" Style = vbYesNo + vbQuestion + vbDefaultButton1 Msgrec = MsgBox(Msg, Style, Title) Select Case Msgrec Case vbYes: ChDir "C:\Documents and Settings\デスクトップ" Workbooks.Open Filename:= _ "C:\Documents and Settings\デスクトップ\book100.xls" aaa = Application.InputBox("数値を入力! 1=東京、2=大阪、3=千葉", Type:=1) MsgBox erabu Select Case aaa Case 1 Selection.Copy Windows("book100.xls").Activate Sheets("東京").Select Range("X16").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Case 2 Selection.Copy Windows("book100.xls").Activate Sheets("大阪").Select Range("X16").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Case 3 Selection.Copy Windows("book100.xls").Activate Sheets("千葉").Select Range("X16").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Select Windows("book100.xls").Activate ...ここでエラーです (実行時エラー インデックスが範囲内にありません) ActiveWorkbook.Close End Select ' End Sub 事前にbook100のシートは選択状態で 保存してあります

  • hiro823
  • ベストアンサー率25% (74/285)
回答No.1

こんにちは。 ちょっとお聞きします。 ブック(book)ですか? シート(sheet)ではなく? ブック=ファイルというイメージだったかと思います。 なので、ご質問の内容を行うのであれば、book1からbook100をfileopenしないと、book100の内容は見れない&コピーできないと思います。 間違っていたらごめんなさい。 それでは。

ennkai
質問者

補足

補足いたします book100はブックです この中のとあるシートの一部を(すでに選択して あるので)コピーしてから book1(これもブックです)の中にあるシートの一部に貼り付けます ここまでは問題なく作動します その後の book100を閉じる。・・・このときに エラーが起こってしまいます わかりにくい表現で申し訳ないです