• ベストアンサー

Access-VBAでExcelファイルを作成する。

こんにちわお世話になります。 「Excelにエクスポート」ボタンをクリックすると、Inputboxか何かが表示されて、Pathやファイル名やシート名を入力し、「実行」ボタンを押すと、新規にExcelのBookを、そのPath、ファイル名、シート名で作成する。その後、そのシートにデータを書き込むという作業をしたいのです。 AccessのデータをExcelの任意のシートを開いて書き込むという部分のVBAコードはわかりますので、新規Book作成部分のコードがわかるかたお願いします。 Office97を使用しています。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryにチェックを入 れて下さい。 オブジェクトへの参照を格納する変数を事前バインディング。 変数にオブジェクトの参照を代入します。Addメソッドを使って新規workbookと worksheet オブジェクトを作成します。 値を代入し名前を付けて保存してオブジェクトを開放する。という流れで良いと 思います。 Private Sub Command1_Click()   On Error Resume Next   Dim xlApp  As Excel.Application   Dim xlBook As Excel.Workbook   Dim xlSheet As Excel.Worksheet   Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.Workbooks.Add   Set xlSheet = xlBook.Worksheets(1)   ' Excel のセルに値を代入します。   xlSheet.Cells(1, 1).Value = " "   ' Worksheet を名前をつけて保存します。ダイアグボックス等を使用して    パスやBook名など入力できるようにしてもOKです。   xlSheet.SaveAs "c:\Temp.xls"   xlApp.Quit   Set xlSheet = Nothing   Set xlBook = Nothing   Set xlApp = Nothing End Sub こんな感じでしょうか。

souta_n
質問者

お礼

ばっちり出来ました。ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルのツール-マクロ-マクロの記録で エクセルのファイル-新規作成の操作をすれば、 Workbooks.Add ActiveCell.FormulaR1C1 = "aaa" Range("A2").Select ActiveWorkbook.SaveAs Filename:="C:\My Documents\ccc3.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False となります。 これをそっくりxlapp=CreateObject"Excel.Application") の後にいれれば良いです。 ActiveCell.FormulaR1C1 = "aaa"は例でいれただけで、 実質シート内容を作成は ActiveWorkbooks.Worksheets("Sheet1").Range("a1")= とかで行う。

souta_n
質問者

お礼

最初これを読んだとき良くわからなかったのですが、後のO_cyanさんの回答と見比べてやっと意味がわかりました。ありがとうございます。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

Workbooks.Add で新規に Book を作成します。 シート名については、新規に作成された Workbook は、所定の数のシートを持って作成されるので、 シート数がひとつになるまで ActiveSheet.Delete を繰り返し、ひとつになったら シート名をお好みのに変える、という感じでしょうか。 SaveAs で保存すれば、パスとファイル名は指定できますね。 Dim excel As Object excel = CreateObject("Excel.Application") Workbooks.Add Do While Sheets.Count <> 1   ActiveSheet.Delete Loop ActiveSheet.Name = "sheet name" ' ここで、シートに対して処理を ごにょごにょ excel.SaveAs "d:\test.xls" excel.Application.Quit excel = Nothing # 全然、試してません

souta_n
質問者

お礼

試してみました。いっぱいコレクションが無いとか変数が定義されていません。みたいなエラーが出まして、改めてdimで宣言したりしたんですが、結局うまくいきませんでした。もう少し自分にテクニックがあれば何とかできそうなもんなんですが・・・ ありがとうございました。