アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2000にて現在、各部署別の勤怠データベースを作成しています。
その中で特定部署名をコンボックスで選択してその部署の勤怠データだけ抽出し、エクセルファイルへ出力する様にしたいのです。この場合、コンボックスで指定した 部署名をファイル名にして出力する場合はどの様にすれば良いでしょうか? 例えば、コンボックスで 部署名 ”東京営業部” と
選択したら抽出後、出力するファイル名は ”東京営業部.xls” として、並びにシート名は
”東京営業部”として 出力したいのです。 お手数ですが何卒よろしくお願い致します。

A 回答 (2件)

質問日時がだいぶ前なので既に解決されているかもしれませんが・・・



VBAを使う方法になってしまいますが、
コンボボックス名は仮に「コンボ0」とし、以下のような感じでどうでしょうか。
(コンボボックスの変更時イベントあたりに埋め込むのが良いかと思います)

Private Sub コンボ0_Change()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim tbsql As String
Dim xlapp As Object
Dim xlbook As Object
Dim i As Long

'抽出条件の設定
tbsql = "select * from テーブル名 where [部署名] ='" & コンボ0.Value & "';"
Set db = CurrentDb
Set rs = db.OpenRecordset(tbsql)

'エクセルを起動
Set xlapp = CreateObject("excel.application")
xlapp.Visible = True
xlapp.ScreenUpdating = False

'新規ブックを追加し、抽出した内容を出力
Set xlbook = xlapp.Workbooks.Add
With xlbook
For i = 0 To rs.Fields.Count - 1 '1行目にフィールド名を出力
.Sheets(1).Cells(1, i + 1) = rs.Fields(i).Name
Next
.Sheets(1).range("A2").CopyFromRecordset rs 'A2セル以降にデータを出力
.Sheets(1).Name = コンボ0.Value 'Sheet1の名前を変更
.Sheets(2).Delete 'Sheet2を削除(このあたりは不要な処理なら削って下さい)
.Sheets(3).Delete 'Sheet3を削除
End With

'コンボボックスの値をファイル名とし保存
xlbook.SaveAs "c:\フォルダ名\" & コンボ0.Value & ".xls"
xlapp.ScreenUpdating = True

rs.Close
db.Close

End Sub

この回答への補足

ご回答ありがとうございました。
早速、テーブル名の所に設定するクエリ名を指定し、実行したのですが
"実行時エラー3601 パラメーターが少なすぎます。1を指定してください"
とメッセージが出力されます。
元となるクエリは今回、フォーム”抽出”のコンボックス”コンボックス0” から
”部署名”を指定し、該当の”部署名”だけのデータを抽出する パラメータクエリになっております。
エラー箇所は ”Set rs = db.OpenRecordset(tbsql)” の所ですが
上記に何か設定を施せばエラーが無くなりますでしょうか。

重ねてお手数ですがご存じであればお教え願います。

上記の件、お手数ですがよろしくお願い致します。

補足日時:2013/12/24 23:31
    • good
    • 0
この回答へのお礼

重ね重ねご回答有難うございました。
tbsql = "select * from テーブル名 where [部署名] ='" & コンボ0.Value & "';"
の箇所については、上記構文どおり クエリの元となる テーブルを指定した所
エラー表示はなくなりました。

本当に有難うございました。

お礼日時:2013/12/25 13:29

補足に対しまして・・・


テーブル名の指定部分はクエリ名ではなく、そのクエリの元になっているテーブル自体の名前を指定して下さい。
「select * from~」の箇所の一文でそのままパラメータクエリ同様の役割をしてくれますので。

恐らくそれが原因かとは思いますが、もしそれでも駄目なようなら再度補足願います。。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す