- ベストアンサー
accessからexcelへ出力 報告書レイアウトについて
accessのデータを基に、報告書をexcelで作成したいのですが、 単純にエクスポートしたようなデータビューの形式でなく、 規定のレイアウトに、はめ込むようにして書類を作成しなくてはならないのです。(いわば単票フォームです) この場合はどのような手順で、構築すればよいのでしょうか? ・一旦データビュー形式で出力し、excelのマクロでコピペする? ・accessから出力先のexcelのセルを指定する?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<Ex_Sekyusho.ini> 3,3,A商品 4,3,1200 4,4,12 私は、Access の請求書データベースから上述のようなテキストファイルを送出して請求書.xlsで整形しています。 Excel側では、この[行,列,データ]形式のデータを、 Auto_Open() で呼び込んで表示しています。 ユーザが、Access からの送出と請求書.xlsの表示とを非連続的に行えるところがミソです。 Public Sub Auto_Open() Dim I As Integer Dim N As Integer Dim rowIndex As Integer Dim colIndex As Integer Dim colValue As String Dim strDatas() As String strDatas() = FileReadArray("C:\Temp\Ex_Sekyusho.ini") N = UBound(strDatas()) For I = 0 To N If CharCount(strDatas(I), ",") = 2 Then rowIndex = CutStr(strDatas(I), ",", 1) colIndex = CutStr(strDatas(I), ",", 2) colValue = CutStr(strDatas(I), ",", 3) Worksheets("Sheet1").Cells(rowIndex, colIndex) = colValue End If Next I End Sub 次は、実際に請求書.xlsに表示させた結果です。 [C] 1 2 3 A商品 4 1200 5 12 まあ、AutoOpen() 自体は、読んだら判る簡単なものです。 ただ、FileReadArray()、CharCount()、CutStr() に相当する関数ライブラリの有無が問題です。 ファイルを読む込んでいますので Microsoft Scripring Runtime を参照設定に加える必要もあります。 なお、<Ex_Sekyusho.ini>を作成し書き出すには、 FileWrite "3,3,A商品" & vbCrLf & _ "4,3,1200" & vbCrLf & _ "4,4,12" と FileWrite() を使用しています。 Public Function CharCount(ByVal Text As String, ByVal C As String) As Integer CharCount = Len(Text) - Len(Replace(Text, C, "")) End Function 長くなるのでその他の関数の詳細は割愛します。 OKWave の過去の回答を参照していただけば、全て、近々に紹介していると思います。
その他の回答 (2)
- gatt_mk
- ベストアンサー率29% (356/1220)
できますが、かなり高度なVBAの知識が必要となります。 1.対象となるワークブックのフルパス取得 2.出力したい値を含むレコードセットの作成。 3.Excelインスタンスの起動 4.出力先シートの指定 5.各項目の値の取得 6.出力先セルの指定 7.各値の代入 8.ワークブックの保存 9.Excelインスタンスの終了 ざっくりと考えただけでも上記手順を踏む必要があるでしょう。 これに加えエラー発生時の処理なども考慮しなければならないので、かなりVBAに精通していないと難しいと思います。 下記サイトで検索条件に「Excel」と入力して検索すれば、参考になるVBAスクリプトが見つかるかもしれません。 http://www2.moug.net/bbs/acm_v/ Excelインスタンスの終了をミスるとバッグランドで起動したままになり、そのブックが修正できなくなります(他の人が使用中で開けませんというメッセージが出て操作ができなくなります。)。 私もよくAccessでExcelに出力後、項目のフォントを変えたり、出力時の条件を1行目に記載したりと、出力後のExcelファイルの操作をAccess側からやりますが、思い通りにやるにはかなりのVBAスクリプトを書かなければなりません。(ちなみに10年以上ACCESSを使って開発しています)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>・一旦データビュー形式で出力し、excelのマクロでコピペする? データビューで表示してやる必要はありません コピペよりももっと便利なオフィスリンクでExcelにテーブルやクエリを出力できます >・accessから出力先のexcelのセルを指定する? これはできません 新しいシートとしてエクスポートされます ExcelのほうからAccessのクエリを指定して >単純にエクスポートしたようなデータビューの形式 で取り込み そのデータを元にExcelのほうで報告書を作成するのがいいんじゃないですか
補足
ご回答ありがとうございます。 >オフィスリンク… について、もう少しご教授いただけますか? 初耳なものでして(ググってもわかりませんでした) よろしければ参考URLなど、お願できますでしょうか? >ExcelのほうからAccessのクエリを指定して… これは、まずexcelを起動させる必要があるわけですね? 作業を単純化させたいので、どうにかaccessだけを始点にしたシステムを作りたいと思っています。