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

このQ&Aのポイント
  • Access2000を利用して、VBAを使用してエクセルファイルを操作する方法について教えてください。
  • 既存のエクセルファイルにクエリからデータを挿入する方法と、条件を満たす場合にシートとブックを追加する方法について教えてください。
  • VBAを使って既存のエクセルファイルを開き、クエリから取得したデータを挿入したいです。また、特定の条件の場合には新しいシートとブックを追加する処理も書きたいです。
回答を見る
  • ベストアンサー

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

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

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

こんな塩梅かと思います。 Sub test() Dim ExcelApp As Object Dim ExcelBK As Object Dim ExcelBK_New As Object Dim ExcelST As Object Dim ExcelST_New As Object Set ExcelApp = CreateObject("Excel.Application") '既存Bookに追加 Set ExcelBK = ExcelApp.workbooks.Open("f:\data\123\book1.xls") ExcelApp.Sheets.Add after:=ExcelApp.Sheets(ExcelBK.Sheets.Count) ExcelApp.ActiveSheet.Name = "NewTes1" '新規Book作成 Set ExcelBK_New = ExcelApp.workbooks.Add '("g:\test.xls") Set ExcelST_New = ExcelBK_New.worksheets(1) ExcelST_New.range("A1") = "おニューです" ExcelBK.Save ExcelBK_New.Saveas Format(Now, "yyyymmdd_hhnnss") & "test.xls" ExcelApp.Quit Set ExcelBK = Nothing: Set ExcelApp = Nothing Set ExcelBK_New = Nothing: Set ExcelST_New = Nothing End Sub

fm0606
質問者

補足

ありがとうございます。 完璧なご回答です。

関連するQ&A

  • ACCESSからexcelを操作

    accessのVBからEXCELのデータ編集を行う際、 最後エクセルを開放しているつもりなのですが、できていないようです。 ※タスクマネージャーにエクセルのタスクが残っており、 該当のファイルを開くと白くなっている。閉じて再度開くと正常動作する。 いくつかの帳票がありますが、 現象が起こるものと起こらないものがあります。 試しに Xls_app.ScreenUpdating = Trueにしてみるとタスクには残っているが 問題なく開けます。 Xls_app.ScreenUpdating = Falseだとタスクにも残るし、ファイルを開くと白くなっているような感じです。 しかし発生原因がわからず、再発するような気もするので根本原因を 突き止めたいです。 Excel起動時 ---------------- Set Xls_app = CreateObject("Excel.Application") Set Xls_book = Xls_app.Workbooks.Open(STR_out_file) Set Xls_sheet = Xls_book.Worksheets(STR_sheet1) Set Xls_sheet2 = Xls_book.Worksheets(STR_sheet2) 'DEBUG Xls_app.Visible = False Xls_app.ScreenUpdating = False Xls_app.UserControl = True ' Xls_app.Visible = True ' Xls_app.ScreenUpdating = True Private Sub Excel終了()----------------------- Xls_book.Close (True) Xls_app.Quit Set Xls_sheet = Nothing Set Xls_sheet2 = Nothing Set Xls_book = Nothing Set Xls_app = Nothing End Sub

  • 【ACCESS】 VBA

    accessのVBAからエクセルファイルを参照する仕組みを作成しています。 エクセルファイルのシート名は数字になっており 下記のように記述するとエラーとなります。対応方法を教えてください。 STR_sheetは1 Set Xls_sheet = Xls_book.Worksheets(STR_sheet) こうしてみてもダメ Set Xls_sheet = Xls_book.Worksheets(Format(STR_sheet)) ちなみに、エクセルのシート名は変更不可です。

  • VB6からExcelを操作する

    VB6.0からExcelの操作をしています。 そのなかで、Excelシートを印刷したいのですが、どのようにしたら良いのでしょうか。 また、ExcelVBAのFunctionやSubを実行するにはどのようにするのでしょうか。 VB6.0内でExcel操作は次のようにしています。 Dim ExcelApp As Object Dim EWorkbook As Object Dim ESheet As Object Set ExcelApp = CreateObject("Excel.Application") Set EWorkbook = ExcelApp.Workbooks.Open(ExcelBookFlNm) Set ESheet = EWorkbook.Sheets(M_SheetNm) Set ESheet = Nothing Set EWorkbook = Nothing ExcelApp.Quit Set ExcelApp = Nothing よろしくお願いします。

  • VBAでAccessからExcel

    VBAでAccessからExcelファイルを ダイアログで選択して開き転記をさせたい。 以下のように書いてみるとダイアログ表示までは 出るのですが、Excelは起動しません、 何かが足りないとは思うのですが ご指摘、ご教授お願いします。 Sub test2() Dim objxls Set objxls = CreateObject("excel.application") Dim myfile Dim xls myfile = objxls.Application.getopenfilename() Set xls = objxls.workbooks.Open(myfile)

  • VB6でExcelシートのコピー、貼付け

    VB6でExcelファイルを開いてシートをコピーし、新規ファイルとして保存したいのですが方法がわかりません。 (既存のExcelシートを雛形として新しくBookを作りたいんです) Set objexcel = CreateObject ("Excel.Application") Set objexcel_new = CreateObject("Excel.Application") objexcel.Workbooks.open (App.Path & "\book1.xls") objexcel_new.Workbooks.Add '新規に作る 'シートのコピー objexcel.sheets("Sheet1").Copy objexcel_new.sheets("Sheet1").Select objexcel_new.activesheet.Paste としても、実行前のクリップボードの中身が貼り付けられるだけで、シートがコピーできません。 よろしくお願いします。

  • ACCESSのVBAからExcelのセルから読めたのですが、書く方法を教えてください

    下記の方法でCell(1,1)、から読むことができました そこで今度書き込みなのですが With xlBk.Worksheets("Sheet1")    'Debug.Print .Cells(1,1)    .Cell(1,2) = "data" End With としても、エクセルシートには書かれていないのですが 書く方法を教えてください ただ、下記の Open(Filename:=strFile, UpdateLinks:=0) はエクセルをOpenする時 「このブックは他のデータソースへのリンクがふくまれています」 とメッセージがでるので、UpdateLinks:=0、と入れています よろしくおねがいします '--------------------------------- Dim xlApp As Excel.Application Dim xlBk As Excel.Workbook Dim strFile As String strFile = "C:\Sample\Book1.xls" Set xlApp = CreateObject("Excel.Application") Set xlBk = xlApp.Workbooks.Open(Filename:=strFile, UpdateLinks:=0) With xlBk.Worksheets("Sheet1")   Debug.Print .Cells(1,1) End With xlBk.Close False xlApp.Quit Set xlApp = Nothing '----------------------------------

  • Access開いているブックのセル値参照

    AccessのVBAからExcelのブック(通常既に開いています)のセルの値を参照するものを作成 しているのですが、うまくいきません。ご教授頂けないでしょうか。 Set Set myXlsSheet = myXls.Worksheets("sheet1") の行がインデックスが有効範囲にあり ません。とエラーがでます。 ここで既に開いているExcelブック自体をWorkbooks.open を使用せずにオブジェクト自体をset して、各シート値を参照することができないでしょうか。 現状できているコード Dim myXls As Object Dim myXlsSheet As Object Set myXls = CreateObject("Excel.Application") Set myXlsSheet = CreateObject("Excel.Sheet") myXls.Visible = False ' Set myXlsSheet = myXls.Workbooks.Open("C:\test.xls", 1) 'これだとまた同じファイルを開いて処理するため処理が遅くなる。 Set myXls = myXls.Workbooks("test.xls") 'インデックスが有効範囲にありません。のエラーがここで出ます。 Set myXlsSheet = myXls.Worksheets("sheet1") Debug.Print myXls.WorksSheets("sheet1").Cells(1, 1).Value myXls.Close Set myXls = Nothing myXls.Quit Set myXlsSheet = Nothing MsgBox "完了"

  • AccessからExcelのシートを削除

    現在AccessのテーブルをExcelへエクスポートする処理を書いています。 内容は以下のとおりです。 ・エクスポート先のExcelファイルは新規のものではなく既存のファイルを使用 ・エクスポートする際、以前エクスポートした分のシートを削除してから転送させたい 下記のようなコードを書きましたが実行してみると前回エクスポートした分のシートは削除されておらず 今回エクスポートしたものが追加されているという状況です。 ●エクスポート先Excelファイル名:エクセルファイル.xls ●エクスポートするテーブル名(Excelではシート名):転送テーブル Set xlsApp = CreateObject("Excel.Application") Set wkBook = xlsApp.Workbooks.Open("C\エクセルファイル.xls") wkb.Application.DisplayAlerts = False wkBook.Worksheets("転送テーブル").Activate wkBook.Worksheets("転送テーブル").Delete wkBook.Save wkBook.Close wkb.Application.DisplayAlerts = True Set xlsApp = Nothing Set wkBook = Nothing DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "エクセルファイル.xls", FullPath どうぞよろしくお願い致しますm<_ _>m

  • cscriptでは動くが、html埋め込みは×

    例えば、下記のコードは、Table.jsとかしてCscript Table.jsとするとちゃんと動きますが、<html><body><script language="jscript"> ここに記載</script></body></html>として、IE9で動かそうとしても動きません。htmlに埋め込んで動かすにはどうしたらいいのでしょうか? var excelApp = WScript.CreateObject("Excel.Application"); //var excelApp = new ActiveXOject("Excel.Application");  としても一緒でした。 var book = excelApp.Workbooks.Open("d:\\test\\Table.xls"); var sheet = book.WorkSheets("Sheet1"); // Excel内を読み込み var itemName = sheet.Cells(3, 2); var weaponType = sheet.Cells(3, 3); var power = sheet.Cells(3, 4); var deffence = sheet.Cells(3, 5); var price = sheet.Cells(3, 6); WScript.Echo(itemName, weaponType, power, deffence, price); book.Close(); excelApp.Quit(); excelApp = null;

  • VBからEXCELを保存

    VBからEXCELに保存したいのですが、前準備としてEXCELのsheet2で保存します。VBを実行したときにExcelのsheet1に保存したいのですが、どうすればいいかわかりません、おしえてください。多分、保存するときにSheet2を対象にしていると思うので、sheet1を対象にしたいのですが・・・ /****************** VBを実行したときの処理 ********************/ 'アプリケーションの参照 Set xlApp = CreateObject("Excel.Application") 'ブックの参照 Set xlBook = xlApp.Workbooks.Open("C:\テスト\テスト.Xls") 'シートの参照 Set xlSheet = xlBook.Worksheets("Sheet1")

専門家に質問してみよう