• 締切済み

別ブックからのデータ取り込み

下記の(1)(2)のマクロを(3)のコマンドボタンで実行させています。 (1)(2)を使用せずに(3)のコマンドボタンにまとめて記載したいのですが上手く出来ません。 また、(1)の"A:\あ.CSV"部分ですが、使用PCによってドライブが異なる場合があるります。セルC2に入力したドライブ名を反映させることはできないでしょうか? よろしくお願いします。 (1) Sub I()    Workbooks.Open Filename:="A:\あ.xls"    lngR = Range("B65536").End(xlUp).Row    Range("B2:B" & lngR).Select    Selection.Copy    Windows("か.xls").Activate    Range("B3").Select    ActiveSheet.Paste    lngR = Range("B65536").End(xlUp).Row    Range("B2:F" & lngR).Select    With Selection.Font     .Size = 8    End With     End Sub (2) Sub II()    Windows("あ.xls").Activate    lngR = Range("E65536").End(xlUp).Row    Range("E2:E" & lngR).Select    Selection.Copy    Windows("か.xls").Activate    Range("G3").Select    ActiveSheet.Paste    lngR = Range("G65536").End(xlUp).Row    Range("G2:G" & lngR).Select    Selection.Style = "Comma [0]"    With Selection.Font     .Size = 9    End With    Windows("あ.xls").Activate    ActiveWindow.Close   End Sub (3) Private Sub 取込_Click()    Application.ScreenUpdating = False    Protect UserInterfaceOnly:=True    Application.Run "I"    Application.Run "II"    Selection.Locked = False    Applicaion.ScreenUpdating = True   End Sub

みんなの回答

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.3

おはようございます 遅くなり申し訳ない所存です。 まずは訂正から lngR = Range("B2").CurrentRegion.Row の部分は lngR = Range("B2").CurrentRegion.Rows.Count です。重ねてお詫び申し上げます。 ご質問に関しては Dim myドラ As String Dim myブック As String myドラ = ActiveSheet.Range("C2").Value myブック = ActiveSheet.Range("E2").Value & ".csv" Workbooks.Open Filename:=myドラ & ":\" & myブック で良いかと思います。

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.2

少し編集してみました。 これで動くようでしたら、再度一まとめにしてみてください。 尚、Sub I、IIは Module1 にコピーで、Sub 取込_Clickと同じファイルに入れてください。Windows("あ.csv") はWorkbooks("あ.csv").Sheets(1) に変更しました。 Selectはなるべく使用しないようにしました。 最終行を求める方法は2通りにしてあります。 Dim lngR As Long '(3万行ないならIntegerのほうがいいです) Dim myドラ As String Sub I() myドラ = ActiveSheet.Range("C2").Value Workbooks.Open Filename:=myドラ & ":\" & "あ.xls" lngR = Range("B2").CurrentRegion.Row Range("B2:B" & lngR).Copy Destination:=Workbooks("か.xls").Sheets(1).Range("B3") Workbooks("か.xls").Sheets(1).Activate Range("B2:F" & lngR + 1).Font.Size = 8 End Sub Sub II() Workbooks("あ.csv").Sheets(1).Activate lngR = Range("E65536").End(xlUp).Row Range("E2:E" & lngR).Copy Destination:=Workbooks("か.xls").Sheets(1).Range("G3") Workbooks("か.xls").Sheets(1).Activate With Range("G2:G" & lngR + 1) .Style = "Comma [0]" .Font.Size = 9 End With Workbooks("あ.csv").Activate Workbooks("あ.csv").Close End Sub Sub 取込_Click() Application.ScreenUpdating = False 'Protect UserInterfaceOnly:=True Call Module1.I Call Module1.II 'Selection.Locked = False Application.ScreenUpdating = True End Sub

ZERO-123
質問者

補足

おはようございます。 回答No.2の方法を試してみました。 少ない知識と勘で、考えられる限り試行錯誤してみましたが、結果に別の問題が生じてしまいました。 根本的に、作成したBookの構成に起因するものと思われます。 きっと総合的にスマートな方法があるのでしょうが、ここに構成や記述の詳細を全て挙げる時間とスペースがないので、今回は基本的に元の状態で進めます。 いずれアクセスで処理すべきものなのでしょうが・・・ 教えて頂いた方法は今後に生かしたいと思います。 ありがとうございました。 それから、この場をお借りしてもう一つ知りたい事があります。 myドラ=ActiveSheet.Range("C2").Value Workbooks.Open Filename:=myドラ & ":\" & "あ.csv" 上記の"あ"の部分を"E2"から取得する方法はありますか? こちらも試行錯誤していますが、未だ正解に辿りつけません。 よろしくお願いします。

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.1

おはようございます まず、何がどのようにまくいかないのでしょう? もう少しご説明なさらないと、回答にこまります。 >また、(1)の"A:\あ.CSV"部分ですが、使用PCによってドライブが異なる場合があるります CSVがありません。 また、"A:\あ.CSV"のような、大胆なディレクトリの使い方はリムーバブルディスクということでしょうか? そういうことといたしまして(細かなディレクトリがある場合はご自分で入れてください、C:\Documents and Settings\Owner\My Documentsとかです) セルC2にたとえば A とかで入れるとして、 Workbooks.Open Filename:="A:\あ.xls" を myドラ=ActiveSheet.Range("C2").Value Workbooks.Open Filename:=myドラ & ":\" & "あ.xls" にすれば良いかと思います。 >Protect UserInterfaceOnly:=True ActiveSheet.Protect UserInterfaceOnly:=True でしょうか。 最後に、(3)におまとめになるのでしたら Application.Run "I"、Application.Run "II"それぞれの部分を Sub I、IIの中身をコピー&ペーストで置き換えれば良いかと思います。

ZERO-123
質問者

補足

おはようございます。 早朝からの回答ありがとうございます。 >"A:\あ.CSV"のような、大胆なディレクトリの使い方はリムーバブルディスクということでしょうか? その通りです。 ファイル指定の部分は教えていただいた記述で解決する事が出来ました。 ありがとうございます。 >CSVがありません。 すみません。 (1),(2)の"A:\あ.xls"部分は"A:\あ.CSV"の誤りでした。 (3)の"I","II"の部分をそのまま置き換える方法ですと、 最初のRange("B2:B" & lngR).Selectの部分でエラーになってしまいます。 Workbooksから指定しなおしてみたのですが上手くいきません。 このサイトから似たような例を検索して一部書き換えて使う程度の知識しかなく、自力で解決できませんでした。 現状でも機能はしているのですが疑問に思った次第です。

関連するQ&A

  • マクロを使ったコピペがうまく動作しない。

    あるデータを転記用のブック(月毎にシートが分かれています。シートの内容は同一)に貼り付ける処理を行うため、下記のようなマクロを組んだのですが、何故か貼りつきません。処理終了時には、転記元ブック(シート)で最終処理の範囲(5番目のB287)を選択しています。一体何がいけないのでしょうか? データはA1からPまでで毎月可変しています。 また、転記用ブックが12枚あるため、月を指定してから貼り付けたいのですが、どのようにすればよいでしょうか?(下記は直接シ-トを指定しました) Sub test() Dim 最終行 As Integer '-------------------------------------------- 開始 Windows("21-12.xls").Activate 最終行 = Range("p65536").End(xlUp).Row Sheets("1").Range("A1:p" & 最終行).Select Selection.Copy Windows("転記.xls").Activate Sheets(12月).Select Range("B1").PasteSpecial Paste:=xlPasteValues '-------------------------------------------- 1 Windows("21-12.xls").Activate 最終行 = Range("p65536").End(xlUp).Row Sheets("2").Range("A1:p" & 最終行).Select Selection.Copy Windows("転記.xls").Activate Sheets(12月).Select Range("B83").PasteSpecial Paste:=xlPasteValues '-------------------------------------------- 2 Windows("21-12.xls").Activate 最終行 = Range("p65536").End(xlUp).Row Sheets("3").Range("A1:p" & 最終行).Select Selection.Copy Windows("転記.xls").Activate Sheets(12月).Select Range("B157").PasteSpecial Paste:=xlPasteValues '-------------------------------------------- 3 Windows("21-12.xls").Activate 最終行 = Range("p65536").End(xlUp).Row Sheets("4").Range("A1:p" & 最終行).Select Selection.Copy Windows("転記.xls").Activate Sheets(12月).Select Range("B227").PasteSpecial Paste:=xlPasteValues '-------------------------------------------- 4 Windows("21-12.xls").Activate 最終行 = Range("p65536").End(xlUp).Row Sheets("5").Range("A1:p" & 最終行).Select Selection.Copy Windows("転記.xls").Activate Sheets(12月).Select Range("B287").PasteSpecial Paste:=xlPasteValues --------------------------------------------- 5 End Sub 

  • EXCLの自動マクロ記録を簡潔に編集をお願いします。

    すみません教えてください。  収支会計.XLSの売上台帳のシートを別ファイル確定申告2.xlsの売上作業範囲シートに貼り付けたく自動マクロを記録したのですが、いまいち動きがぎこちなく重く何とかスムーズに出来ないでしょうか? Sub 売り上げ書き込み() ' ' 売り上げ書き込み Macro ' Range("A2:F251").Select Selection.Delete Shift:=xlUp Application.Left = 20.8 Application.Top = 34 Windows("収支会計.XLS").Activate With ActiveWindow .Top = 3.4 .Left = 9.4 End With Sheets("売上台帳").Select ActiveWindow.SmallScroll Down:=-55 ActiveWindow.ScrollRow = 1 With ActiveWindow .Top = 87.4 .Left = 37 End With Range("D5:H1004").Select Selection.Copy Windows("確定申告2.xls").Activate Range("B2").Select ActiveSheet.Paste Range("A2").Select Windows("収支会計.XLS").Activate Range("C5:C430").Select Application.CutCopyMode = False Selection.Copy Windows("確定申告2.xls").Activate ActiveSheet.Paste Range("H8").Select End Sub 宜しくお願いします。

  • VBAでブックの集計の仕方を教えてください。

    H22.12月度と言う名前のフォルダーにA店~E店と集計と言う名前のブックがあります。 集計のブックでA店~E店の集計をしてくるマクロを組んでいますが上手く作動しません。 集計のブックには、セルの書式設定をしていますので、A店~E店の売上一覧のシートから 値だけをコピーして集計したいのですが、罫線やパターン、数式までコピーしてきたり、 最後のE店だけ2重にコピーしてきたりと変な動作をします。 初心者で本やネットで調べながら作ったので、どこの記述がおかしくて、そうなるのかがさっぱりわかりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。 Sub 集計() Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\A店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("A店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close     ・     ・     ・(B・C・D店も同じ記述)     ・     ・   Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\E店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("E店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close    Windows("集計.xls").Activate Application.WindowState = xlMaximized Range("E5").Select End Sub

  • VBA 他のエクセルファイルデータを読み込む

    エクセルのVBAに関する質問です。 かじった程度の知識でがんばってはみたのですが、以下のことがどうしてもできません。 集計ファイルと、それぞれが入力するファイルがいくつか(具体的には1A.xls、1B.xls、2A.xls、2B.xlsといった数字とアルファベットの組み合わせ)あります。 入力ファイルに書かれているデータを集計ファイルに取り込もうと考えています。 入力ファイル名が(1.xls,2.xls・・・)の様に数字だけの取り込みはできました。 m = Val(UserForm2.TextBox1.Text) For i = 1 To m On Error GoTo myError Workbooks.Open Filename:="C:" & i & ".xls", UpdateLinks:=0 Range("f65536").End(xlUp).Activate Workbooks(i & ".xls").Activate Sheets("入力ファイル").Select Range("A3:X52").Select Application.CutCopyMode = False Selection.Copy Workbooks("集計ファイル.xls").Activate Sheets("DB").Activate Range("a65536").End(xlUp).Activate Selection.Offset(1).Select ActiveSheet.Paste Range("a65536").End(xlUp).Select   Workbooks(i & ".xls").Close SaveChanges:=False myError: Next i Application.DisplayAlerts = True こんな感じです。 これを、数字だけでなく数字+アルファベット.xlsのファイル名にしてデータを取り込むにはどうすればいいのでしょうか?色々と試行錯誤をしたり、ネットで調べたりしたのですが、詰んでしまいました。 どなたかお助け下さい。

  • エクセルで複数ファイルからコピーをする。

    すみませんが、BOOK1に複数のファイルから部分的にコピーして貼り付けるという作業をしたいのですが、ど素人なもんでわかりません。マクロで記録したモノをいじってみてるのですが、根本的にコードが分かっていなくギブアップです。  やりたいことは、フォルダーの中の970305日報1、970305日報2、970306日報1、970306日報2のようなファイルが山ほどあるのですが、 この970305の日報1と2を開き、それぞれファイルの決まった列を順番にをBook1の行へ行列を入れ替えて貼りつけていき(1日が1行)保存して閉じてから、次の日970306のデータをBOOK1の2行目に貼り付けるということをしたいのですが、どなたか教えていただければ助かります。よろしくお願いします。 Sub Macro2() Dim MyFile As String, MyPath As String Dim wb As Workbook, tb As Workbook Set tb = ThisWorkbook MyPath = tb.Path & "\" MyFile = Dir(MyPath & "*.xls", vbNormal) Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Do While MyFile <> "" If MyFile <> tb.Name Then Set wb = Workbooks.Open(MyPath & MyFile) With ActiveSheet Windows("970305日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C1").Select Selection.PasteSpecial Paste:=xlPasteAll,         Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H1").Select Selection.PasteSpecial Paste:=xlPasteAll,       Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報1.xls").Activate ActiveWindow.Close Windows("970305日報2.xls").Activate Range("B31:B36").Select Selection.Copy Windows("日報リスト.xls").Activate Range("N1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報2.xls").Activate Range("D31:D36").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("T1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報2.xls").Activate ActiveWindow.Close Windows("970306日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970306日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970306日報1.xls").Activate ActiveWindow.Close -----------------------------------------

  • オートフィルタをし選択・貼付をマクロにしたいのですが、対象データ表示される行が毎回違うのでうまくいきません。

    いつもお世話になっております。 どなたかご教示いただければ助かります。 ファイル(1)のデータの中からA行が830となっているものを、ファイル(2)のページ1の一番下の行に付け足し 同じようにファイル(1)からA行が1000となっているものを、ファイル(2)のページ2の一番下に付け足す という作業をマクロでしたいのですが、毎回830と1000がセルAの何行目に表示されるのかが異なっており、オートフィルタをかけた状態でマクロにするとマクロ作成時にたまたま表示されていた行数が指定されているので、別の日に違う行数をコピーしてしまい私が作成したマクロではうまくいきません。 どう変更すれば宜しいでしょうか? どうぞ宜しくお願い致します。 Workbooks.Open Filename:="mm.xls"    ←上記文でファイル(1) Sheets(DM).Select Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>*850*", Operator:=xlAnd, _ Criteria2:="<>*1000*" Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete ActiveSheet.Rows("1:1").Select Selection.AutoFilter Windows("xx.xls").Activate  ←ファイル(2) Sheets("ll").Select   ←ページ1  ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="1000" Rows("3:3").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False Windows("xx.xls").Activate Sheets("pp").Select  ←ページ2 ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="850" Rows("2:2").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows("mm.xls").Activate ActiveWindow.Close End Sub

  • ブックの統合について

    Sub 集計() Application.ScreenUpdating = False fldPath = ThisWorkbook.Path & "\" fname = Dir(fldPath & "*.xls") Do Until fname = Empty If fname <> ThisWorkbook.Name Then Workbooks.Open fldPath & fname mx = Application.WorksheetFunction.Max(Sheets("1日").Columns(1)) lr = Sheets("1日").Range("B65536").End(xlUp).Row FR = ThisWorkbook.Sheets("1日").Range("B65536").End(xlUp).Row + 1 Sheets("1日").Rows("6:" & lr).Copy Application.DisplayAlerts = False ActiveWorkbook.Close (False) Application.DisplayAlerts = True ThisWorkbook.Sheets("1日").Cells(FR, 1).Select ActiveSheet.Paste Application.CutCopyMode = False End If fname = Dir Loop Application.ScreenUpdating = True End Sub 上記のようにマクロを組みましたが、集計したいシートがたくさんある為 シートごとにマクロを組みなおさなければなりません。 そこで、 集計するシートと集計されるシートのシート名が一緒の時、 わざわざsheets("1日")と書き直さなくても "Activesheetと同じシート名"のようなマクロの組み方は出来るのでしょうか。

  • Excel マクロ : マクロの記録の表記方法の変更

    Excelで質問です。 下記のようなマクロの記録を使用し「顧客一覧」のブックにデータを追加しています。 しかし、処理の中で一項目コピーするごとにファイルを行ったり来たりしているようで処理が遅いようです。何か解決策はあるのでしょうか? ・ ・ ・ Windows("顧客一覧.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("顧客一覧.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy Windows("顧客一覧.xls").Activate Range("B4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C8").Select Application.CutCopyMode = False Selection.Copy   ・   ・

  • ピボットテーブルのマクロでシートを指定、連続

    過去問?も確認しましたが、うまく行きません。 マクロの自動記録で作成し、TableDestination:=Sheets("Sheet1").Range("A1"),、と変更しましたが、 With ActiveSheet.PivotTables("ピボットテーブル1")のところで止まってしまいます。また、最後の行の Application.Run "'Pivot for 東京.xls'!Macro3"は、正しい記述でしょうか?  よろしくお願いします。 Workbooks.Open Filename:= _ "C:\Documents and Settings\ \デスクトップ\Access DB\Pivot for 東京.xls" Sheets("DSG").Select Columns("A:AZ").Select Range("Q1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("GSG").Select Columns("A:AZ").Select Range("P1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("ダート").Select Columns("A:AZ").Select Range("W1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("芝").Select Columns("A:AZ").Select Range("AQ1").Activate Selection.Delete Shift:=xlToLeft Range("A1").Select Windows("Pivot01.xls").Activate Sheets("G").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "G!R1C5:R8594C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル1" With ActiveSheet.PivotTables("ピボットテーブル1")  '------------>ここで止まります .NullString = "0" .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="騎手名", _ ColumnFields:=Array("距離", "着順") With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Sheets("1").Select Columns("A:DD").Select Selection.Delete Shift:=xlToLeft Sheets("D").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "D!R1C5:R9508C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル2" ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False ActiveSheet.PivotTables("ピボットテーブル2").AddFields RowFields:="騎手名", _ ColumnFields:=Array("距離", "着順") With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Sheets("1").Select Columns("A:DD").Select Selection.Delete Shift:=xlToLeft Sheets("GSG").Select Range("E1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "GSG!R1C5:R81C11").CreatePivotTable TableDestination:=Sheets("Sheet1").Range("A1"), TableName _ :="ピボットテーブル3" With ActiveSheet.PivotTables("ピボットテーブル3") .NullString = "0" .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル3").AddFields RowFields:="騎手名", _ ColumnFields:="着順" With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("着順") .Orientation = xlDataField .Caption = "データの個数 : 着順" .Function = xlCount End With Application.CommandBars("PivotTable").Visible = False Windows("Pivot01.xls").Activate Application.Run "'Pivot for 東京.xls'!Macro3" End Sub

  • マクロを使って、抽出したデータを別のファイルにコピーしたい

    VBA初心者です。 自動記録で、フィルターオプション設定を使い抽出したデータを、別ファイルにまとめようとしています。 自動記録ですので、実行はできるのですが、このままだとデータの更新があった時、 範囲の指定をやり直すことになりますので、少しシンプルで応用の効くコードにしたいと思っています。 集約するシート:テスト用 sheet1(集約) sheet2(条件) 元のデータ:金額一覧表(01~03) 金額一覧表(04~06) 金額一覧表(07~10) sheet1=ファイル名 <各データは2万~3万件> Sub 抽出_1() Windows("金額一覧表(01~03).xls").Activate Range("A1:R16824").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Workbooks("テスト用.xls").Sheets("条件").Range("A1:F27"), Unique:=False End Sub ------------------------------------------------ Sub データを転記_1() Windows("金額一覧表(01~03).xls").Activate Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Windows("テスト用.xls").Activate Sheets("集約").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub ---------------------------------------------------  又、金額一覧表(01~03)のデータを貼り付けた後、 金額一覧表(04~06)も同じようにデータ抽出コピーしようとしたのですが、 Sub データを転記_() の6行目に下記のようなコードを入れたところ、 7行目がデバックしてしまいました。 (実行時エラ-:1004   コピー領域と貼り付け領域の形がちがうため情報を貼り付けることができません) とエラーが出てしまいました。 6行目  Set sakiRng = Range("A65536").End(xlUp).Offset(1) 7行目  ActiveSheet.Paste  ←ここがデバック 何か指定し忘れているものがあるのでしょうか? お知恵拝借できれば幸いです。

専門家に質問してみよう