- ベストアンサー
Access-VBAでExcelファイルを作成する。
こんにちわお世話になります。 「Excelにエクスポート」ボタンをクリックすると、Inputboxか何かが表示されて、Pathやファイル名やシート名を入力し、「実行」ボタンを押すと、新規にExcelのBookを、そのPath、ファイル名、シート名で作成する。その後、そのシートにデータを書き込むという作業をしたいのです。 AccessのデータをExcelの任意のシートを開いて書き込むという部分のVBAコードはわかりますので、新規Book作成部分のコードがわかるかたお願いします。 Office97を使用しています。
- みんなの回答 (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 こんな感じでしょうか。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルのツール-マクロ-マクロの記録で エクセルのファイル-新規作成の操作をすれば、 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")= とかで行う。
お礼
最初これを読んだとき良くわからなかったのですが、後のO_cyanさんの回答と見比べてやっと意味がわかりました。ありがとうございます。
- a-kuma
- ベストアンサー率50% (1122/2211)
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 # 全然、試してません
お礼
試してみました。いっぱいコレクションが無いとか変数が定義されていません。みたいなエラーが出まして、改めてdimで宣言したりしたんですが、結局うまくいきませんでした。もう少し自分にテクニックがあれば何とかできそうなもんなんですが・・・ ありがとうございました。
お礼
ばっちり出来ました。ありがとうございました。