• ベストアンサー

VBAの構文過ち箇所指摘お願いします。

まだまだVBA初心者です。 あるブックに2番目に開いたブックの一部を選択し、図のコピーで貼り付けるというものですが、最初の Workbooks(2).workshees(Sheets.Count).Activate でエラーが出ます。 2番目に開いたブックの一番右のシートの中の一部のセルを選択したいのですが、ご指摘おねがいします!! 以下その構文です。 Sub 2番目に開いたブックの貼り付け() On Error GoTo HandleErr Workbooks(2).workshees(Sheets.Count).Activate ActiveWindow.DisplayGridlines = False Range("A1:B2").Select Selection.CopyPicture Appearance:=xlScreen,Format:=xlPicture Workbooks(1).Activate Workbooks(1).Worksheets(Sheets.Count - 1).Range"B41").Select     ・     ・     ・     間省略 Exit Sub HandleErr: MsgBox "2番目のブックが開かれておりません!!" End Sub

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

一応、質問のエラーの件だけ。 気づいた点3つあり。 >Workbooks(2).workshees(Sheets.Count).Activate (1)workshees ではなくて、Worksheets ( t が抜けてる) (2)Sheets.Countの前にWorkbookオブジェクトが必要 (3)Workbooks(2)にworksheetだけでなくGraphシートなどもあるのなら    Sheets.Countではなくて、Worksheet.Countでないとダメ 以上を踏まえて確実に書くとすると Workbooks(2).Worksheets(Workbooks(2).Worksheets.Count).Activate 又は With Workbooks(2)   .Worksheets(.Worksheets.Count).Activate End With など。  

daiettosur
質問者

お礼

"t"のミスも含めて上記の通り守勢すると無事動きました。 ありがとうございます。 こんなミスを見落とすほど迷路に入り込んでいたのかも。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>Workbooks(2).workshees(Sheets.Count).Activate >でエラーが出ます。 他のところは見ておりませんが、とりあえず  Workbooks(2).Worksheets(Sheets.Count).Activate ってことですか? (Workshee"t"s ← t が抜けてます) コードは、手打ちでここに入力されたのでしょうか?

daiettosur
質問者

お礼

無事マクロ作動しました。 ありがとうございます。

daiettosur
質問者

補足

一部手打ちで打ち直したところありますが、 その時に"t"が抜けてしまったかどうか定かではないです。 でもそうでなければ、ケアレスミスですよね…。

関連するQ&A

  • マクロを教えてください

    同じフォルダ内にあるXlsブックのあるSheetのデータを他のBookにコピーして貼り付けて貼り付けた側のBookで加工したいのですがうまくマクロが組めません。 Bookを共有で使っているので困っています。 Sub ワードアート1_Click ' ActiveWindow.ScrollWorkbookTabs sition:=xlLast Workbooks.Open ("販売管理表み.xls") Sheets("在庫一覧").Select Cells.Select Range("A1").Activate Selection.Copy Windows("完成在庫.xls").Activate Sheets("完成在庫一覧").Select Range("A1").Select ActiveSheet.Paste End Sub って書いてみましたが、Workbooks…のところでエラーになってしまいました。(TOT)初心者ですみません。教えてください。

  • VBA作製ができません。どなたか教えてください。

    前回同じタイトルで質問させていただいた物を自分なりに本で調べて 作ってみました。しかし壁にぶつかりました。 Cells(Rows.Count, 7).End(xlUp).Offset(rowoffset:=1).Select この式は7列目の一番下の空欄のセルを選択できる式のようですが、 指定した範囲のなかで7列目の一番下のセルを選択したいのですがどうすればいいでしょうか? つまり列だけじゃなく行も選択したいです。 教えてください。 こんな式を作りました。  もし式を簡単に効率よくできる方法があればアドバイス下さい。 If Range("G4").Value = SpecialCells Then Range("H4").Select Else Range("G4").Select Range("G4").Copy Windows("Book1.xlsx").Activate Range("G18:G26") = Selection.Areas.Count Cells(Rows.Count, 7).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("D4").Select Range("D4").Copy Windows("Book1.xlsx").Activate Cells(Rows.Count, 4).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("E4").Select Range("E4").Copy Windows("Book1.xlsx").Activate Cells(Rows.Count, 5).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("H4").Select End If

  • マクロ構文エラー

    下記のマクロを記述していますが構文エラーが出ます 何が原因でしょうか。 Sub 会計データ送信() Sheets("工程生産バランス").Select file = "ml" & Cells(8, 12) & Cells(9, 13) & ".xls" Range("E5").Select If Range("E5") = "4月" Then Range("E6:E38").Select Selection.Copy Workbooks.Open Filename:="C:\sdata\ml\生産バランス.xls" Sheets("上期工程生産バランス").Select Range("E6:E38").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("E6").Select End If Windows("file").Activate  →エラー箇所(インデックスが有効範囲にありません。) Sheets("工程生産バランス").Select Range("E5").Select End Sub 教えてください。

  • VBAについて教えて下さい

    作業内容 (1) 「 初期入力 ! B列 」 ダブルクリック VBAProject ⇒ 「 初期入力 ! 」 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Cells.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub ドロップダウン代わりに「Data ! 」を表示 Sheets("Data").Activate End Sub (2) 値をダブルクリックして、「初期入力」に戻る。 VBAProject ⇒ 「 Data ! 」 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Range("FC63364").Activate Sheets("初期入力").Activate ’選択した値を「初期入力!」シートに戻す ActiveCell.Value = Target.Value End Sub ここまでが現在の作業です。 現在の工程内に下記を増やしたいのですが、エラーが出て増やせません。教えて頂けませんか> (3) 「Data ! FB63375,FG63375,FI63375」 を 「拾い出し ! K4」 にコピー&ペーストしたいです。 「Data ! FB63375」⇒「拾い出し ! K4」へ 「Data ! FG63375」⇒「拾い出し ! L4」へ 「Data ! FI63375」⇒「拾い出し ! M4」へ Range("FB63375,FG63375,FI63375").Select Range("FI63375").Activate Selection.Copy Sheets("拾い出し").Select Range("K4").Select ActiveSheet.Paste Sheets("Data").Select End Sub *次回「Data!FB63375,FG63375,FI63375」をコピーすると、前回コピーされた下の行「拾い出し ! K5」にコピーするようにしたいです。 (4) Data!FC63367:FI63374」を「拾い出し!O4」にコピー&ペーストしたいです。 Range("FC63367:FI63374").Select Selection.Copy Sheets("拾い出し").Select Range("O4").Select ActiveSheet.Paste Sheets("Data").Select End Sub *次回「Data!FC63367:FI63374」をコピーすると前回コピーされた下の行「拾い出し!O11」にコピー&ペーストしたいです。 お分かりになられる方おられましたら、教えて頂けませんか? 宜しくお願いします。

  • ECXEL VBA - Selectメソッドの失敗

    Rangeを指定するのに、 Workbooks("abc").Sheets("Sheet1").Range("A1").Select と言う風に指定したいのですが、これを行なうと -------------------------------------------- 実行時エラー '1004': RangeクラスのSelectメソッドが失敗しました。 -------------------------------------------- となってしまう為、いつもわざわざ下記のようにしています。 Workbooks("abc").Activate Sheets("Sheet1").Select Range("A1").Select Selectだけでなく、Copyの貼り付け等の時も同様で かなりの手間と、コードの長さになってしまっています。 どこかの設定を変えると出来たりするのでしょうか? 又、他に良い方法がありましたらお教え下さい。 よろしくお願いします。

  • エクセルVBAで全シートをアクティブにするには?

    ブック内の全シートを選択するのはSheets.Selectですね。 そうやって選択した全部のワークシートをアクティブにするにはどう記述するのでしょうか? SelectedSheets.Activateや Sheets.Activateではエラーになってしまいました。 何をしたいかといえば、全シートをアクティブにしてページ設定(横向きに)したいのです。

  • エクセルVBAの変数利用

    シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub

  • VBA ブック間のコピー

    2つのブック(どちらも変数ですが、MyFNameとMyFName2)を開いています。 このブック間で、データをコピー貼付けしたいのです 貼付け先は、セル結合しているので、セルを2つ選択してみました Workbooks(MyFName).Activate 'Worksheets("部品表").Activate Range("D4").Select Selection.Copy Workbooks(MyFName2).Activate Range("F37:G37").Select でも、貼付け先のセルがアクティブにはなっていますが、データが貼り付けられていませんでした。 ちなみに、2008年00月00日のデータ貼付け作業です どうかご指導ください

  • エクセル2007VBAで新規ファイルを作る場合

    現在A社というファイルのsheet1に電気代と名前を付けたデータ、sheet2に ガス代という名前を付けたデータがあり電気代のブックからコピーして新規ファイルに貼り付けをしたいと思い下記のとおりマクロがありますが、新規ブックを開いた時常に1ではなく他に新規ブックを開いていたら2とか3になってしまいます。すると再度新規ブックに戻ってガス代を貼り付ける時2とか3tpか4とかでしたらエラーになってしまいます。 こういう場合どのように書いたら良いのでしょうか? それから最後に新規ファイルで名前を付けて保存のところまでダイアログ出すところまで 教えていただきたいのですが。 マクロ勉強始めたばかりでよろしくお願います。 Sub DGCopy() Cells.Select Selection.Copy Workbooks.Add Cells.Select ActiveSheet.Paste Sheets("Sheet1").Select Sheets("Sheet1").Name = "電気代" Windows("A社.xls").Activate Sheets("電気代").Select Cells.Select Application.CutCopyMode = False Selection.Copy Windows("Book1").Activate Sheets("Sheet2").Select Cells.Select ActiveSheet.Paste Sheets("Sheet2").Select Sheets("Sheet2").Name = "ガス代" Application.CutCopyMode = False End Sub

  • エラーになる理由とならない理由は?

    同じアプリケーション内にBook1.xlsとBook2.xlsを開き、 Book1.xlsのSheet1に アクティブエックスのコマンドボタンを設置して、 Private Sub CommandButton1_Click() Range("a1").Select End Sub としました。 このコードは問題なく実行できますが、 Book1.xlsのコマンドボタンから、 「Book2.xlsのSheet1を選択する」というコードをしたい時に、 Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Range("a1").Select End Sub をすると、 「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」 になります。 しかしなぜかRangeの前にSheets("Sheet1")を入れて Private Sub CommandButton1_Click() Windows("Book2.xls").Activate Sheets("Sheet1").Range("a1").Select End Sub にすると、問題なく実行できます。 Book1.xlsにもBook2.xlsにも「Sheet1」と言う名のシートはあります。 なぜ、Sheets("Sheet1").を入れるとエラーにならないのか教えてください。

専門家に質問してみよう