• 締切済み

AccessからExcelへ保存

はじめまして 質問させていただきます。 【処理内容】 1.Accessにて作成したテーブルデータをTEMP.xlsとして出力 2.TEMP.xlsのデータを出力先.xlsへコピーする という処理を作っているのですが、具体的に 2-1.TEMP.xlsを1行コピー 2-2.ヘッダ用.xlsの最終行に貼り付け 2-3.TEMP.xlsの最終行まで繰り返す 2-4.ヘッダ用.xlsの名前を「出力先.xls」として保存する 2-5.ブックを閉じる と行っています。 それぞれに入るデータは TEMP.xls・・・Accessから作成されたエクセルファイル ヘッダ用.xls・・・「出力先.xls」のヘッダー 出力用.xls・・・TEMP.xlsのデータ+ヘッダ用.xlsのデータ というつくりです。 このとき、TEMP.xlsの最終セル位置を取得させているのですが、 なぜか65536行と、最大値を取得してしまいます。 (本来のデータは130件程度) データ件数と取得する行数を一致させたいのですが、どうすればいいでしょうか? 説明下手なうえ、開発環境が手元にない常態での質問で申し訳ないんですが、回答お願いいたします

みんなの回答

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

手順複雑ですね データ件数は 例えば =COUNT(A:A) ではどうですか 他の件は別にQしてください ・テーブルのデータを条件を付けて絞り込む ・ACCESSよりエキスポートする、EXCEL側でインポートする ・テンポラリーファイルが無くてもワークシートを追加してこれに替える

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

質問は複雑な書き方だが下記が骨子として使えると思うが。 >ヘッダ用.xlsの最終行に貼り付け と>ヘッダ用.xlsは別物か?ややこしい。 処理手順まで書かなくてよい。初心者なら、回答者のやり方でよい(自分に合ったもの)を判断すればよい。 ーー Sub test01() d = Range("a65536").End(xlUp).Row MsgBox d ActiveSheet.Range("a2:D" & d).Copy Workbooks("01化.xls").Worksheets("Sheet3").Range("A3") End Sub で出来るのでは。 上の例は TEMP.XLSと01化.xlsブック(コピーのデスチネーション)を開いておく。 TEMPブックのコピーするシートをアクチブにしておいて、(プログラムでも出来るが、上記は手動でアクチブにして実行のこと)実行すると、上例では01化.xlsの指定シート(Sheet3)に貼り付ける。

  • tag1701
  • ベストアンサー率54% (67/123)
回答No.1

>このとき、TEMP.xlsの最終セル位置を取得させているのですが、 なぜか65536行と、最大値を取得してしまいます。 これは最終セルという事ですので2003verの最終行に 移動させる命令をしているものと思われます。 エクセルはデータベースでは基本的にありませんので 130件が最終テーブルと認識しないのです。(そのままでは) この場合、一旦最終行までいってますので、空白行まで遡らせる 事が必要なようです。 下記記述を参考下さい。 Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(1).Select 「合うように記述は変更してください」

mo-yang
質問者

お礼

回答ありがとうございます! 明日にならなければ試せないんですが、参考にさせていただきます! 本当にありがとうございました!

関連するQ&A

  • ACCESS VBAでExcelを開き行をコピーしたい

    ACCESS VBAでExcelを開き データを出力しようと思っています。 その時にあらかじめ指定した行をコピーし その行にデータを出力したいと 思っていますが 行のコピーは、どのようにしたら できるのですか? 教えてください。 よろしくお願いします。

  • EXCEL VBA 貼り付け

    A.xls 、B.xlsと二つのブックがあります。 A.xls のA列の最終行がA100だった場合は、A.xlsのA101以降にB.xlsのA2以降のデータ、A.xlsのB101以降にB2以降のデータA.xlsのC01以降にC2以降のデータを貼り付けたいのですが・・ ※A.xls のA列の最終行を取得して、B.xlsのデータをA.xlsの最終行に貼り付ける。 よろしくお願いいたします。

  • C#でのExcelファイル出力処理

    DataSetから取得した内容をExcelに保存する処理を行います。 Form上にExcel出力ボタンを置いておきクリックします。 ExcelテンプレートをD:\hoge\temp.xlsに置いておき Excel使用のC#のそれなりのコードを書きます。 temp.xlsをコピーしリネームします。 リネームしたファイルにDataSetから取得した内容を書き込みます。 (GridViewのような一覧になります。) Excelへの書き込み処理はできています。 最後の保存の際に、 Excel.SaveAs("所定フォルダ\ファイル名.xls")と決め打ちで保存させていますが、SaveFileDialogクラスで「名前を付けて保存」させる方法ってありますか?

  • 1行目のデータが張り付けられない(アクセス)

    お世話になります。 windows7 アクセス2010 エクセル2010 エクセルのデータをアクセスに張り付けると、1行目のデータが 張り付けることができません。 2行目以降からデータはりつけはできます。 なんとなく、アクセスが勝手に1行目はヘッダーとみなして 2行目から処理しているような感じです。 もともとオフィス2003で同様の操作を行っていましたが、 オフィス2010の環境になると張り付けれなくなりました。 対処方法ご存じの方いませんか? よろしくお願いします。

  • エクセルデータをアクセスにコピペする時のこと

    http://www.relief.jp/itnote/archives/000543.php ↑などにエクセルをアクセスのテーブルにコピーする時、『[データの最初の行には、列ヘッダーが含まれていますか?]という確認メッセージが表示されるので』と書いてありますが、私がやると出ません。 特別何か有るのでしょうか。 WIN XP ACCESS 2007 です。よろしくお願いします。

  • 【再】AccessでExcelインポート時の制限

    お世話になります。 ※再投稿となります。 Access2010のExcelインポート時の制限につきまして、ご教授頂けたらと思います。 現在、VBAにてExcelをインポートし(※)、その後、SQLサーバーへエクスポートする処理を行っておりますが、Excelの「備考」の文字数が多くなってきた為、途中で文字が切れないよう修正することとなりました。 上記(※)の処理では予めローカルに空のテーブル(temp)を作成し、そこにExcelデータをインポートしております。  DoCmd.CopyObject "", "temp", acTable, "tempcopy"  DoCmd.TransferSpreadsheet acImport, 8, "temp", strFile, True tempはtempcopyをコピーして作成しており、今回tempcopyの「備考」をテキスト型からメモ型に変更しました。 これにより「備考」の文字は途中で切れなくなりました。 ※当該mdbはAccess2003にて作成。 しかし、このmdbをAccess2010で実行すると、文字が途中で切れてしまいます。 Access2010は2003とインポート時の仕様(制限)が異なるのでしょうか?その場合、どのようにすれば文字列が途中で切れずにインポートすることが出来るようになるのでしょうか。 以上、宜しくお願い致します。

  • 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の操作

    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を開いた後にやりたい事は見出し部分より上にヘッダーとして 作成日付を入力したいと考えています。 よろしくお願いします。

  • jakarta poiを使用し、EXCELの行コピーはできないのでしょうか?

    以下のような処理を検討しています。 フォーマット.xlsには、タイトル行の雛型(背景色などを定義済)をを作成しておきます。 そのフォーマット.xlsをpoiを利用し読み込み、 ■タイトル行 ・明細 ・明細 ・明細 ■タイトル行 ・明細 ・明細 の要領でタイトル行を何度もコピーし、新しいエクセルを出力したいと考えています。 HSSFSheet#shiftRowsは完全なる移動のようですので、 何度もタイトル行を使う場合には不都合がでてしまいます。 単純な行コピーなのでできそうな感じもするのですが、 ご存じな方いらっしゃいましたら、 ご教授いただけますようお願いいたします。

    • ベストアンサー
    • Java
  • VBA マクロ付きExcelファイルを無効で開く

    タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

専門家に質問してみよう