こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

こんにちわお世話になります。

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

投稿日時 - 2002-12-12 18:31:20

QNo.426358

困ってます

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

プロジェクト→参照設定で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

こんな感じでしょうか。

投稿日時 - 2002-12-13 10:54:14

お礼

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

投稿日時 - 2002-12-16 18:12:57

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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")=
とかで行う。

投稿日時 - 2002-12-12 20:12:50

お礼

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

投稿日時 - 2002-12-16 18:11:36

ANo.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

# 全然、試してません

投稿日時 - 2002-12-12 19:46:09

お礼

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

投稿日時 - 2002-12-16 18:07:24

あなたにオススメの質問