AccessからExcelの操作

このQ&Aのポイント
  • Accessのクエリで抽出したデータをExcelに出力し、形式を整えたいと考えています。
  • Excel出力は任意の場所に出力したいと考えています。
  • Excelを開いた後にはヘッダーとして作成日付を入力したいと考えています。
回答を見る
  • ベストアンサー

AccessからExcelの操作

OS:WindowsXP ソフト:Access2003 お世話になります。 Accessのクエリで抽出したデータをExcelに出力し、その後出力ファイルを開き 形式を整えたいと考えています。 Excel出力は任意の場所に出力したいと考えています。 出力については過去の質問などを検索し以下のコードで無事出力されるのは確認できました。 *************************************************************** Sub Save() DoCmd.TransferSpreadsheet acExport, 8, "Q004", GetSaveName, True End Sub Function GetSaveName(Optional ByVal strFile As String) Dim intResult As Integer With WizHook .Key = 51488399 intResult = .GetFileName(0, "", "保存先を選択してください", "保存", strFile, "", "MicrosoftExcel ブック (*.xls)|*.xls", 0, 0, 0, False) .Key = 0 End With If intResult = -302 Then 'キャンセルされた場合 GetSaveName = "False" Else GetSaveName = strFile End If End Function *************************************************************** この後に対象のExcelを開きたいのですが、うまく対象のファイルを開く事が出来ません。 CreateObject("Excel.Application") xls.Workbooks.Open() 上記のコマンドでExcelが開けると思うのですが、Open()のカッコ内には どのように指定すれば良いのでしょうか? ちなみにExcelを開いた後にやりたい事は見出し部分より上にヘッダーとして 作成日付を入力したいと考えています。 よろしくお願いします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

先にCreateObjectでEXCELブックを作ってから、データを設定するほうが楽だと思いますよ。 「VBA CopyFromRecordset」でWeb検索するとサンプルが拾えるので、それをACCESS VBA上に乗っけてください。

YYKK8419
質問者

お礼

回答ありがとうございます。 教えて頂いたコードで検索してみました。 http://www.sanryu.net/acc/tips/tips252.htm 上記の場合、「任意の場所に出力」ではなくなってしまうと思います。 決まった場所に決まったファイル名で出力するという条件であれば、 なんとか自分で解決出来ます。 私の検索が足りないのでしょうか?

YYKK8419
質問者

補足

いろいろ試していたら何とか自己解決できました。 ありがとうございました。

関連するQ&A

  • Access VBA

    AccessからVBAを利用してダイアログ形式でExcelファイルのインポートをしたいです。 実行すると、 「このアクションまたはメソッドを実行するには、[File Name/ファイル名]引数が必要です。」 とエラーが出てしまいます。 標準モジュール —――――――――――――――――――――――――――――――――――― Function TestGetFileName() Const ENABLE_WIZHOOK = 51488399 Const DISABLE_WIZHOOK = 0 Dim strFile As String Dim intResult As Integer WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化 intResult = WizHook.GetFileName( _ 0, "", "", "", strFile, "", _ "xlsxファイル (*.xlsx)|*.*", _ 0, 0, 0, True _ ) WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化 TestGetFileName = strFile End Function —――――――――――――――――――――――――――――――――――― フォームのボタン押下時 —――――――――――――――――――――――――――――――――――― Public Sub コマンド0_Click() Dim s As String s = TestGetFileName If s = "" Or IsNull(s) Then Exit Sub DoCmd.TransferSpreadsheet acimport, 10, "取込B", strFileName, False, "注文TB!" MsgBox "インポートが終了しました。" End Sub —――――――――――――――――――――――――――――――――――― VBA自体かなりの初心者ですが、お知恵をお貸しください。

  • 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からExcelが開かない

    Access2000 の●●mdb から Excel2007 のAAA.xls を開こうとしますが オートメーションエラー(サーバーによって例外が返されました) が表示され開きません。 ●●mdb と AAA.xls は同じフォルダーに入れてます。 Accessの「参照設定」では、   Microsoft Excel 12.0 Object Library を選んでます。 ボタン(Cmd1)を押して表示させたいので Private Sub Cmd1_Click() Dim Appexcel As New Excel.Application Dim wb As Excel.Workbook Dim strfile As String strfile = CurrentProject.Path & "\AAA.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True End Sub のように書いてますが、どうもうまく開いてくれません。 どうすれば表示させることができますか。

  • Excel VBA 違うxlsファイルの指定したシートを開く処理

    Excel VBAで違うExcelファイルの指定したシートを開きたいのですが、 うまくいきません。現在のコードは、 *フォーム* Private Sub CB1_Click() Dim A As Integer A = MsgBox("データ展開する?", 4, "データ展開?") If A = 6 Then INPORT.FILE_OPEN1 End If End Sub *INPORTモジュール* Sub FILE_OPEN1()  FILE_OPEN8 End Sub Sub FILE_OPEN8() Dim fnames As String fnames = fnames1 Workbooks.Open Filename:=fnames ***ここでしょうか?.Sheet("")と指定しても出来ません*** End Sub Function fnames1() As Variant fnames1 = Application.GetOpenFilename( _ Title:="ファイルを開く", _ FILEFILTER:="エクセルファイル (*.xls), *.xls") If fnames1 = False Then MsgBox ("ファイルを開けませんでした。" & Chr$(13) & _ "もう一度やり直して下さい。") End End If End Function また、指定する事が出来たら、選択したシートを現在のブックにコピーもしたいのですが、どの様にすればよいでしょうか? よろしくお願いします。

  • AccessでCSVをインポートしたい(VBA)

    お世話になります。AccessVBA暦2週間の初心者です。 AccessでCSVをインポートできたらいいなと思い ↓下のサイトにあるVBAサンプルを参考にして以下のようにプログラミングをしました。 http://memo.bz/access/advance/csvinpsam Public Function SplitTest() On Error GoTo myError Dim dbs As Database Dim rst As Recordset Dim varData As Variant Dim lngFileNum As Long Dim strData As String Dim xSQL As String FileName = TestGetFileName '入力元CSVファイルを開く lngFileNum = FreeFile() Open FileName For Input As #lngFileNum 'テーブルを開く Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Data") 'CSVファイルの全レコードを読み込むループ Do Until EOF(lngFileNum) 'CSVファイルより1件分を読み込み Line Input #lngFileNum, strData 'カンマで区切って配列に代入 varData = Split(strData, ",", , vbTextCompare) '各フィールドデータをテーブルに追加 With rst .AddNew ![Code1] = varData(0) ![Code2] = varData(1) ![TS] = varData(2) ![PM] = varData(3) ![金額] = varData(4) ![摘要] = varData(5) ![メモ] = varData(6) .Update End With Loop rst.Close Close #lngFileNum MsgBox "データの取り込みが終了しました" Exit Function myError: MsgBox "ファイル名を指定してください" End Function 'CSVファイル選択 Function TestGetFileName() 'ファイル選択 Const ENABLE_WIZHOOK = 51488399 Const DISABLE_WIZHOOK = 0 Dim strFile As String Dim intResult As Integer WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化 intResult = WizHook.GetFileName( _ 0, "", "", "", strFile, "", _ "すべてのファイル (*.*)|*.*", _ 0, 0, 0, True _ ) WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化 TestGetFileName = strFile End Function ダイアログは普通に開けるのですがインポートが出来ず「ファイル名を指定してください」 というメッセージボックスが出ます。 弄っている部分は ![フィールド1] = varData(0)を ![Code1] = varData(0)にしているぐらいです。 何が悪いのか皆目見当がつきません。 こんな初心者でございますがご教授のほどよろしくお願いします。 (ヒントでも構いません) 説明不足等ございましたらご指摘のほどよろしくお願いします。

  • エクセルのハイパーリンクで

    いつもお世話になります。 昨日、エクセルで、あるマスターブック内のシートのコピーをサブブックにコピーし、マスターブックの一覧内にハイパーリンクで繋ぐというものを作成しましたが、このリンクだと、一覧内に書き込まれるハイパーリンクはフルアドレスの書き込みなります。 これを、ダイアログにて保存先、保存名をきいて保存したのちに、ハイパーリンク用として一覧に書き込むファイル名を聞いてくるようにしたいと思います。 昨日作ったモジュールは下記の通りです。 Sub Macro2() Dim strFile As String Dim i As Long Dim na As String Sheets(Array("シート1", "シート2", "シート3", "シート4")).Copy strFile = Application.GetSaveAsFilename(fileFilter:="エクセル ファイル (*.xls), *.xls") If strFile = "False" Then Exit Sub ActiveWorkbook.SaveAs strFile ActiveWorkbook.Close Sheets("一覧").Activate ActiveSheet.Hyperlinks.Add Anchor:=Range("B65536").End(xlUp).Offset(1), Address:=strFile, TextToDisplay:=strFile End Sub

  • ACCESSからEXCELへのオートメーション操作

    ACCESSからEXCELへのオートメーション操作について質問させて下さい。 以下のようにコードを書きましたが、エラーに飛んでしまいます。 また、EXCELファイルは出来ているのですが、データがきちんと出力されません。 解決手段をご教授して下さい。 宜しくお願いします。 Private Sub コマンド39_Click() On Error GoTo エラー_Err DoCmd.TransferSpreadseet acExport, acSpreadsheetTypeExcel8, "営業報告", "C:\営業日報.xls", True Dim objEXE As Object , Dim wk_excel As Object, wk_book As Object Dim wk_file As String wk_file = "営業日報" Set objEXE = Excel.Application objEXE.Workbooks.Open ("C:\営業日報.xls") wk_excel.Sheets(wk_file).Columns("C:C").Select wk_excel.Sheets(wk_file).Open.Columns("E:E").ColumnWidth = 10 With Selection .Formula = .Value End With wk_excel.Sheets(wk_file).Range("A1").Select Exit Sub エラー_Err: MsgBox "エラーです" エクセル_Exit: Exit Sub End Sub

  • AccessでExcelのプロセスが消せない

    Access2007を使用してExcelへ出力するプログラムを作っております。 On Error時にExcelのプロセスが消せなくて困っています。 正常に終了した場合は消えているのですが、On Error時には消せないと言うのはなぜでしょう? どなたか教えてください! ロジックは以下の通りです。 Dim xls, Book, newSheet As Object Private Sub cmd02_Click() On Error GoTo Err_cmd02_Click '処理A '処理B '処理C 'ExcelFile出力 Call ExcelOut Exit_cmd02_Click: Exit Sub Err_cmd02_Click: MsgBox ERR.Description 'ExcelがOpenしているかの判断 If bolExcelFlag = True Then 'Open中だったらClose Set newSheet = Nothing Book.Close SaveChanges:=False Set Book = Nothing xls.Quit Set xls = Nothing End If Resume Exit_cmd02_Click End Sub Private Sub ExcelOut() 'Excelオブジェクト作成 Set xls = CreateObject("Excel.Application") '新しいブックを追加 Set Book = xls.Workbooks.Add '新しいシートを追加 Set newSheet = Book.Worksheets(1) 'ExcelFlagをOn bolExcelFlag = True 'ヘッダー出力 Call HeaderOut 'ExcelFile編集メイン Call MainOut '最終のSub Total編集 Call BreakOut 'フッター出力 Call FooterOut 'ファイルの保存 Book.SaveAs (strOutFileName) '各オブジェクトのClose Book.Close xls.Quit Set newSheet = Nothing Set Book = Nothing Set xls = Nothing 'ExcelFlagをOff bolExcelFlag = False End Sub 以上、よろしくお願いいたします。

  • Access、Excel ともに2003 を使用しています。

    Access、Excel ともに2003 を使用しています。 Access で Excel を動かすことでの質問です。 まず「やりたいこと」を箇条書きにします。 (1)Accessのボタンを押すと以下の作業をする。 (2)Excel の ●●.xls を印刷する。   (但し、この時 Excel の画面は表示しない) (3)その ●●.xls は保存せずに終了する この間、画面は常にAccessが開かれた状態 これを Access側で次のように書きました。 Private sub ボタン_Click() strfile = CurrentProject.Path & "\●●.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible=false ActiveSheet.PrintOut ActiveWorkbook.Saved = True Application.Quit End Sub こうすると、最後の「Application.Quit」でExcel も Access も 共に終了してしまいます。 Excel だけを終了させて、Access は引き続き次の作業に入るには どうすればよいのでしょうか。

  • 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

専門家に質問してみよう