VBA ACCESSからexcel操作

このQ&Aのポイント
  • アクセスのテーブルから新規excel(BOOK1)にデータを抽出し、そのデータを既存のデータが入っているexcel(BOOK2)にコピーする方法について困っています。
  • BOOK1のデータをBOOK2の新規シートにコピーする操作はできますが、RANGEクラスの使用時に「アプリケーションの定義エラー」が発生します。
  • 基本的な操作と思われますが、RANGEクラスを使用して既存のシートにデータをコピーする方法がわかりません。
回答を見る
  • ベストアンサー

VBA ACCESSからexcel操作

仕事でアクセスから二つのファイルを操作したいです。 アクセスのテーブルから新規excel(BOOK1)にデータを抽出し、 そのデータを既存のデータが入っているexcel(BOOK2)にコピーしたいです。 どうしてもコピーメソッドのRANGEクラスのところで「アプリケーションの定義エラー」 なってしまいます。 BOOK1のデータをBOOK2の新規シートにコピー、BOOK1とBOOK2のデータ行を 数える、のは試しやってできたので、 二つのファイル操作は出来ていて、RANGEクラスのところで既存シートにコピーする部分が 出来ていないんだと思います。 基本操作だと思いますが困っています。よろしくお願いします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

No.3です。 YlWb.worksheets("追加差分").Range("1:" & Last_Rowb).Copy XlWb.worksheets(”基本データ").Range(Last_Rowa + 1 & ":" & Last_Rowb) はもしかして YlWb.worksheets("追加差分").Range("1:" & Last_Rowb).Copy XlWb.worksheets(”基本データ").Range(Last_Rowa + 1 & ":" & Last_Rowa + Last_Rowb) になるか???

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

No.1です。 >YlWb.worksheets("追加差分").Range("1:Last_Rowb").Copy >XlWb.worksheets(”基本データ").Range("Last_Rowa+1:Last_Rowb") エラーはこの辺なのかな? だとすれば変数の使い方が変ですよね。 YlWb.worksheets("追加差分").Range("1:" & Last_Rowb).Copy XlWb.worksheets(”基本データ").Range(Last_Rowa + 1 & ":" & Last_Rowb) ではないかな?

  • pochi000
  • ベストアンサー率0% (0/1)
回答No.2

操作が分からなくなってしまったため別id ですが、質問者です。 以下質問のときには書けなかったソースになります。 ACCESSに入力するソース If diR("ファイルパス&BOOK2”) = "" then Docmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,”追加差分”,ファイルパス&Book2") Else Kill("ファイルパス&Book2”) Docmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,”追加差分”,ファイルパス&Book2)  Set Xlappa = CreateObject("Excel.Aplication") Set XlWb = Xlappa.Workbooks.Openc("ファイルパス&Book1”)  Set YlWb = Xlappa.Workbooks.Open(”ファイルパス&Book2”) XlWb.worksheets(1).Activate YlWb.worksheets(1).Activate Last_Rowa = XlWb.ActiveSheet.Cells(Rows.Count,1).End(xlup).row Last_Rowb = YlWb.ActiveSheet.Cells(Rows.Count,1).End(xlup).row YlWb.worksheets("追加差分").Range("1:Last_Rowb").Copy XlWb.worksheets(”基本データ"). Range("Last_Rowa+1:Last_Rowb")

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

せめてそのエラーの出ている部分とかを 提示された方が、回答も楽になると思うのですが・・・

pochi333
質問者

補足

すみません。会社から投稿する事がちょっとしにくかったため、文章での説明になってしまいました。 月曜日再度投稿したいと思います。

関連するQ&A

  • AccessからExcelを操作

    WindowsXP、Access2002、Excel2002を使用しています。 AccessのVBAを記述して、Excelのブック「A」のシート「B」を、ブック「C」にコピーできますか? ブック「A」も「C」もすでに作成されたファイルです。よろしくお願いします。

  • Access2000:VBAを使用したエクセル操作

    下記のように既存のエクセルファイルにクエリからとってきたデータを挿入したいと考えております。 既存のエクセルファイルを開くことは成功したのですが、ある条件だとシートを追加するという処理(オブジェクト記述)がわかりません。 シート追加、あわせてブック追加方法もお願いします。 Set ExcelApp = CreateObject("Excel.Application") Set Book = ExcelApp.Workbooks.Open("C:\query\module\VBExcel.xls") Set Sheet = Book.Worksheets("test1")←追加したい

  • VBからExcelのシートを操作する

     VBからExcelを操作するのですが、  たとえば、Book1のSheet1 を Book2のSheet1の後ろへ  という形でシートをコピーしたいのですがうまくいきません。    Sheet1,Sheet2を Excel.Worksheet 型で定義した変数へそれぞれ取得し、Sheet1のcopyメソッドを使って試しています。  Sheet1.copy のみだと、新たなブックへきちんとコピーされるのですが、After:= Sheet2 をつけるとエラーが起きてしまいます。  この方法で、また、他の方法でもうまくいく方法を御存知の方、何卒御教授のほどをお願いします。

  • ブックを開かずにデータを読む方法を教えてください

     エクセルVBAでブックを開かずにデータ読み取る方法をどなたか教えていただけないでしょうか?ExecuteExcel4Macroメソッドを使用する方法を検討しているのですが、ヘルプを見ても使い方が良くわかりません。例えば    Book1のsheet(1)のRange("A1") に既存する    Book2のsheet(1)のRange("B1") の値をコピーする場合、Book2を開かずに処理したいのですが、やり方がわからず困っています。よろしくお願いします!

  • Excelにデータをエクスポートする

    Access2003のクエリをExcel2003へデータエクスポートするのに、一行目の項目名を同じものにしておくと、既存の名前を付けたExcelブックの既存の名前を付けたワークシートにデータを書き込むことができていました。日々増えて行くAccessデータを抽出してExcelで利用するのに使っていました。 同じことをAccess2010からExcel2010へのエクスポートで実行すると、Excelブックが上書きされて、Excelブック内の他の既存ワークシートがなくなり、エクスポートされたデータのワークシートのみになってしまいます。 2003のときはエクスポートしてそのまま使えたのに、2010では手間が増えてしまいました。2010でも同じように、既存のワークシートに書き込むことをできないものなのでしょうか?

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • エクセルVBAで困っています。

    Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト()   myPath = ThisWorkbook.Path   buf = Dir(myPath & "¥データ¥" & "*.xls")   Do While buf <> ""     Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1"     i = i + 1     Cells(i, 1) = buf     Cells(i, 2) = ExecuteExcel4Macro(Target)     buf = Dir()   Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。

  • Excel VBAを後ろで動かす方法

    VBAが書かれたEXCELのブックがあります。これは、一定時間ごとに処理を行います。その間、別のEXCELブックをひらいて、アクティブにしておきます。そして、VBAが書かれたEXCELファイルの一定間隔ごとの処理が呼ばれたときに、エラーメッセージが表示されます。 エラーメッセージ  実行時エラー 1004  RangeクラスのSelectメソッドが失敗しました。 エラー発生箇所  ThisWorkbook.Sheets("シート1").Range("A2:AZ")).Select エラー発生箇所の前に ThisWorkbook.Activate を入れるとエラーが発生しませんが、画面が切り替わってしまいます。 画面が切り替わらずに、処理を続ける方法を教えてください。 宜しくお願いします。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

専門家に質問してみよう