• ベストアンサー

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/17068)
回答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で宣言したりしたんですが、結局うまくいきませんでした。もう少し自分にテクニックがあれば何とかできそうなもんなんですが・・・ ありがとうございました。

関連するQ&A

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • VBAからEXCELの新規ファイルを作成する

    VB6.0 Excel2000を使用しています。 VBAからEXCELファイルを参照する方法は前回教えていただきましたが 新規にEXCELファイルを作成する方法がわからないので教えてください。 【やりたいこと】 ・ファイル名は、ダイアログボックスから入力され、フルパスで変数に  格納されています。 ・シート名は固定文字で指定します。 (↑ここまではできています) (↓ここからわかりません) ・セルの内容を編集したあと、指定のファイル名・シート名で保存したい よろしくお願いします。

  • EXCELで複数のファイルを同じブック内で開きたい

    久しぶりにVBAを使用してやらせたいことがありますので、質問です。 複数のCSVファイルがあり、これを同じブック内のシートとして開くことは 出来ますでしょうか。 メニューから開くとして、それぞれのファイルを開くと、別々のブックにて開いてしまいます。 これを同じブックで、シート別に開かせたいのですが、出来ますでしょうか。 さらに、これをVBAでやりたいと考えております。 まず考えたのは、 ”Application.GetOpenFilename”です。 ただし、これを利用すると、別々のブックでしか開くことができませんでした。 次に考えたのが、”QueryTables.Add”を利用することです。 これだと、同一ファイル、同一シート内にデータを取り込むことができるので、 問題ないのですが、ファイル名を指定しなければなりません。 ファイルが変わるたびにVBAでパスを修正するのは大変ですので、 ”QueryTables.Add”のデータ取り込みでファイル選択ダイアログが開くような コードがあればよいと考えております。 ファイル選択のダイアログが開いて、そのファイルのパスが取得できるような コードにすれば、”QueryTables.Add”にてデータの取り込みができそうなのですが、 どうすればよいか思いつきません。 "Dialogs(wdDialogFileFind)"というものも見つけたのですが、うまくいきませんでした。 何か良い方法がありますでしょうか。 よろしくお願いします。 Dialogs(wdDialogFileFind)

  • エクセルで作成したリスト

    エクセルで作成したリスト(氏名・住所など10項目程度で200件ほどです)を各取引先ごとにブックを作成して(エクセルファイルでシートは6枚ある決まった書式です)ファイル名は取引先名にしたいのですがどのような方法がありますか? やはりマクロやVBAなどで作るのが一番でしょうか? マクロやVBAは初歩的な簡単なものは作ったことがありますがあまり詳しくありませんが出来るようなら挑戦してみたいのですがもしサンプルコードなど教えていただければお願いします。

  • Excel 他の複数ブック開くVBA 

    お世話になります。田中と申します。 以前も同じ質問させていただきましたが、複数のブックを自動で開いて閉じるVBAロジックをご教授いただきましたく思います。 Excel VBAを使って下記(1)、(2)の処理を実現したいと思っております。 どなたかVBAロジックをご教授いただけませんでしょうか。 (1)集計.xlsxというブックがあります。このブックに[ファイル]というシートがありまして A1のパス、B1にファイル名が記入されています。 この組み合わせのファイル数は可変ですが下記のように大体10個程度あります。 A2(パス)+B2(ファイル名) A3(パス)+B3(ファイル名) A4(パス)+B4(ファイル名) A5(パス)+B5(ファイル名) ・・・ (2)このシートに[開く]というボタンを配置して、クリックされたらA1(パス)+B1(ファイル名)でファイルを開いて何もしないですぐに閉じて、次のファイルを開いて閉じて、また次のファイルを開いて閉じて。。という動きをファイル数分繰り返したいのです。 どなたかご教授いただけますでしょうか。 よろしくお願い致します。

  • Excel→Access VBAによるインポート

    1つのExcelファイルの複数のデータシートをAccess2000にインポートしたい。 【説明】 data.xlsという名前のExcel2000で作成したファイルがあり、その中に同じ書式(列)を 持ったSheetが20枚ほどあります。 それらのデータをAccess2000にインポートしたいのですが、 1.作業は毎月発生する。 2.ほかのユーザも出来るようにする。 などの理由から、マクロかVBAを使って自動化できればと考えています。 ぽちっとボタンを押すと、data.xlsのすべてのシートからデータをインポートし、 それぞれのSheet名がついたテーブルに格納されるというのが理想です。 フィールド名は固定ですので、あらかじめテーブルを作っておくことは出来ます。 Excelの各シートの上部数行は見出しやら説明文が書いてありますので、 インポートの際にその部分の行(5行分)を削除することが必要です。 当方VBAの知識はほぼ皆無ですので、やんわりご教示頂ければ幸いです。 よろしくお願いいたします。 (次回ネットに入るのは15日以降です)

  • Excel2000 VBAで新規シート名を他のシート名と重ならないようにつけるには?

    始めまして。早速ですが、今頭を抱え込んでいる私の悩みを聞いて下さい。 シート名を追加するプログラムで、「シートを追加」というボタンを押すと、 Inputboxを表示し、そこに任意の番号("見積書1"や"請求書1"の数字部分)を入力して、その番号をシート名として取得すると同時に、シートを追加するようにしたいのです。 その過程で、新しいシートの名前をつける際に、同じブック内に既に存在する複数 のシート名と照らし合わせて、もし、既存の番号と同じ番号をInputBoxに入れたときには、「他の番号を入力してください」と再度InputBoxを表示させたいのです。 そして、シート名がブック内に同じものがない場合にのみ、シートを追加するというものです。 VBAを使うより、手動ですれば?という考えももちろん解決方法の一つかとは思いますが、何分Excelを始めて使う年老いた父のために、少しでも簡単に操作できるようにという思いから質問させて頂いております。 どうぞよろしくお願いいたします。

  • 他のExcelファイルのVBAコードを検索したい

    他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。 仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。 「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。 なお環境はWindowsXPのExcel2003です。 よろしくお願いいたします。

  • 【ご質問】Excel2003のVBA作成について

    Excel2003のVBA作成について、ご教授ねがいます。期限もなく本当に困っております。 ■ 実現したいこと Excelシートの1シート目にあるデータを所属コード毎に振り分け、自動で2シート目、3シート目に振り分けたい。 ※1シート目のデータ自体は、所属コード毎に既にソートされている状態 (1) Excelの1シート目に以下のような全データ1000件程度ある。    所属コード/所属名/個人番号/個人名    001/東京/111/山田華子    001/東京/112/鈴木太郎    002/大阪/331/安井徹    005/福岡/444/山下健二 (2) 所属コード毎に2シート目、3シート目に振り分けたい。    2シート目:001/東京/123/山田華子          001/東京/112/鈴木太郎    3シート目:002/大阪/331/安井徹    4シート目:005/福岡/444/山下健二 ■ 環境 WindowsXP、office2003 ■ スキル 簡単なコードを読み・修正ことができる程度です。1からコードを作成するスキルはありません。 ■ 補足 Excel・Access、どちらでも構いません。 同様のファイルが100個、所属が1200ほどあるため、マンパワーでは難しく、プログラムにてできたらと思っております。宜しくお願いいたします。

  • VBAしか使用しないExcelのファイルサイズを軽くしたい

    VBAしか使用しないExcelのファイルサイズを軽量化するにはどうすればよいのでしょうか? 作成したVBAはExcelファイルを開くとInputBoxのダイアログが表示され、 そこにアドレスを入力するとブラウザが開いてそのページを表示します。 ちなみに、ブックのシートは1つだけにしてあり、セルには何も入力していません。 無駄なモジュールはなく、Excelファイルは直接ダブルクリックして開きたいので圧縮は不可です。 これ以上ファイルサイズを減らすことはできるのでしょうか? ご存知の方がおられましたらご回答をよろしくお願いします。 使用OS:Windows XP 使用ソフト:Microsoft Excel 2003

専門家に質問してみよう