Access2000にて現在、各部署別の勤怠データベースを作成しています。
その中で特定部署名をコンボックスで選択してその部署の勤怠データだけ抽出し、エクセルファイルへ出力する様にしたいのです。この場合、コンボックスで指定した 部署名をファイル名にして出力する場合はどの様にすれば良いでしょうか? 例えば、コンボックスで 部署名 ”東京営業部” と
選択したら抽出後、出力するファイル名は ”東京営業部.xls” として、並びにシート名は
”東京営業部”として 出力したいのです。 お手数ですが何卒よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
質問日時がだいぶ前なので既に解決されているかもしれませんが・・・
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)” の所ですが
上記に何か設定を施せばエラーが無くなりますでしょうか。
重ねてお手数ですがご存じであればお教え願います。
上記の件、お手数ですがよろしくお願い致します。
重ね重ねご回答有難うございました。
tbsql = "select * from テーブル名 where [部署名] ='" & コンボ0.Value & "';"
の箇所については、上記構文どおり クエリの元となる テーブルを指定した所
エラー表示はなくなりました。
本当に有難うございました。
No.2
- 回答日時:
補足に対しまして・・・
テーブル名の指定部分はクエリ名ではなく、そのクエリの元になっているテーブル自体の名前を指定して下さい。
「select * from~」の箇所の一文でそのままパラメータクエリ同様の役割をしてくれますので。
恐らくそれが原因かとは思いますが、もしそれでも駄目なようなら再度補足願います。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- 中途・キャリア 社内で部署異動をすべきか、現在の部署に留まるべきか 1 2023/05/08 18:24
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSの集計クエリで3件ある...
-
ACCESSのクエリで同じSQL文だが...
-
Excel VBA:セルを新旧1つずつ...
-
エクセル関数 文字(ハイフン...
-
エクセルデータの末尾の改行を...
-
アクセス クエリ-で空白以外の...
-
抽出したデータを修正して元の...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
SELECTの結果で同一行を複数回...
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
あるカラムのMAX値+1をINSERTし...
-
カレントレコードが無い事を判...
-
実績累計の求め方と意味を教え...
-
Access 文字+年ごとの自動採番
-
select句副問い合わせ 値の個...
-
ファイル書込みで一行もしくは...
-
Excelで、改行がある場合の条件...
-
Excelでセルの書式設定を使用し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSの集計クエリで3件ある...
-
エクセル関数 文字(ハイフン...
-
抽出したデータを修正して元の...
-
ACCESSのクエリで同じSQL文だが...
-
MS-DOSコマンドプロンプトを途...
-
<SQL>条件付きで最小値レコード...
-
アクセス クエリ-で空白以外の...
-
ACCESSで質問があります!
-
空白文字とスペースの検索
-
ADO接続からのACCESSデータシー...
-
VBA CSVファイルを文字列に
-
LIKE *ABC* が ACCESSでは使え...
-
【マクロ】該当データを抽出したい
-
SQLServerからエクセルにデータ...
-
エクセルデータの末尾の改行を...
-
サイトをオフラインでも閲覧し...
-
SQLサーバのデータをエクセルに...
-
PS2のBGM抽出
-
Excel VBA:セルを新旧1つずつ...
-
エクスプローラーで「2つの条件...
おすすめ情報