プロが教える店舗&オフィスのセキュリティ対策術

accessのデータを基に、報告書をexcelで作成したいのですが、
単純にエクスポートしたようなデータビューの形式でなく、
規定のレイアウトに、はめ込むようにして書類を作成しなくてはならないのです。(いわば単票フォームです)

この場合はどのような手順で、構築すればよいのでしょうか?


・一旦データビュー形式で出力し、excelのマクロでコピペする?
・accessから出力先のexcelのセルを指定する?

A 回答 (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 の過去の回答を参照していただけば、全て、近々に紹介していると思います。
    • good
    • 0

できますが、かなり高度な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を使って開発しています)
    • good
    • 0

>・一旦データビュー形式で出力し、excelのマクロでコピペする?


データビューで表示してやる必要はありません
コピペよりももっと便利なオフィスリンクでExcelにテーブルやクエリを出力できます

>・accessから出力先のexcelのセルを指定する?
これはできません
新しいシートとしてエクスポートされます

ExcelのほうからAccessのクエリを指定して
>単純にエクスポートしたようなデータビューの形式
で取り込み
そのデータを元にExcelのほうで報告書を作成するのがいいんじゃないですか

この回答への補足

ご回答ありがとうございます。

>オフィスリンク…
について、もう少しご教授いただけますか?
初耳なものでして(ググってもわかりませんでした)
よろしければ参考URLなど、お願できますでしょうか?

>ExcelのほうからAccessのクエリを指定して…
これは、まずexcelを起動させる必要があるわけですね?
作業を単純化させたいので、どうにかaccessだけを始点にしたシステムを作りたいと思っています。

補足日時:2007/01/15 13:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています