Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1489 / 2272 ツリー ←次へ | 前へ→

【6905】クエリでマクロを組んだものを、エクスポ... サチチ 05/12/5(月) 14:19 質問[未読]
【6912】Re:クエリでマクロを組んだものを、エクス... 小僧 05/12/5(月) 18:05 発言[未読]
【6915】Re:クエリでマクロを組んだものを、エクス... サチチ 05/12/6(火) 11:04 質問[未読]
【6916】Re:クエリでマクロを組んだものを、エクス... 小僧 05/12/6(火) 13:24 回答[未読]
【6917】Re:クエリでマクロを組んだものを、エクス... サチチ 05/12/6(火) 14:16 質問[未読]
【6918】Re:クエリでマクロを組んだものを、エクス... 小僧 05/12/6(火) 14:26 発言[未読]
【6919】Re:クエリでマクロを組んだものを、エクス... サチチ 05/12/6(火) 14:56 お礼[未読]

【6905】クエリでマクロを組んだものを、エクスポ...
質問  サチチ  - 05/12/5(月) 14:19 -

引用なし
パスワード
   こんにちは。小僧さん、またまた教えて下さい。
以前、2000年と打つと、1年目の所に2000年・2年目に2001年と
でるようなクエリ・フォーム・レポートを作成していただいた
のですが、今度は、これをエクスポートしたいのです。
念のため、今回作っていただいたイベントとSQLをのせます。

クエリのSQL↓ (中身は以前より、少し変更しました)
PARAMETERS [Forms]![管理開始5年].[txt年] Long;
TRANSFORM Count(Q_63分類と17分類のまとめ.ID) AS 人数
SELECT Q_63分類と17分類のまとめ.[17分類], Q_63分類と17分類のまとめ.[17分類名], Q_63分類と17分類のまとめ.63分類, Q_63分類と17分類のまとめ.63分類名
FROM Q_63分類と17分類のまとめ
GROUP BY Q_63分類と17分類のまとめ.[17分類], Q_63分類と17分類のまとめ.[17分類名], Q_63分類と17分類のまとめ.63分類, Q_63分類と17分類のまとめ.63分類名
PIVOT (Left(Q_63分類と17分類のまとめ.管理開始年,4)-Forms!管理開始5年.txt年)+1 & '年目' In ('1年目','2年目','3年目','4年目','5年目');

フォームのイベントプロシージャー
Private Sub txt年_AfterUpdate()
  Me.[Lbl1年目].Caption = Me.txt年 & "年"
  Me.[Lbl2年目].Caption = Me.txt年 + 1 & "年"
  Me.[Lbl3年目].Caption = Me.txt年 + 2 & "年"
  Me.[Lbl4年目].Caption = Me.txt年 + 3 & "年"
  Me.[Lbl5年目].Caption = Me.txt年 + 4 & "年"
  Me.Requery
End Sub

レポートのイベントプロシージャー↓
Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
  Me.Lbl1年目.Caption = Forms![管理開始5年].Lbl1年目.Caption
  Me.Lbl2年目.Caption = Forms![管理開始5年].Lbl2年目.Caption
  Me.Lbl3年目.Caption = Forms![管理開始5年].Lbl3年目.Caption
  Me.Lbl4年目.Caption = Forms![管理開始5年].Lbl4年目.Caption
  Me.Lbl5年目.Caption = Forms![管理開始5年].Lbl5年目.Caption
End Sub


としています。今度はエクスポートをして、1年目の所に2000年・2年目の所に2001年
と出力できるようにしたいのです。

どうか、よろしくご教授願います。

【6912】Re:クエリでマクロを組んだものを、エクス...
発言  小僧  - 05/12/5(月) 18:05 -

引用なし
パスワード
   ▼サチチ さん:
こんばんは。

>こんにちは。小僧さん、またまた教えて下さい。

他の回答者の方が答えにくくなってしまいますよ^^;


>今度は、これをエクスポートしたいのです。

どちらにエクスポートするのでしょうか。
Excelファイル、CSVファイル、テキストファイル等…。
エクスポートする対象によってコードが変わってきますのでご提示して下さい。

あとは「エクスポートするタイミング」や、ファイル名が問題になってきますね。

・コンボボックスを更新したら毎回エクスポートするのか、
 エクスポート用のコマンドボタンを配置するのか。

・常に同じ名前で良いのか、C:\2000年.xlsの様にしたいのか。

・同じ名前のファイルがあったらどうするのか。

等などの情報があると、より的確に回答ができると思います。

【6915】Re:クエリでマクロを組んだものを、エクス...
質問  サチチ  - 05/12/6(火) 11:04 -

引用なし
パスワード
   ▼小僧 さん:

こんにちは。

>他の回答者の方が答えにくくなってしまいますよ^^;
・・・申し訳ないです。

>どちらにエクスポートするのでしょうか。
Excelファイルにしたいと思ってます。

>・コンボボックスを更新したら毎回エクスポートするのか、
> エクスポート用のコマンドボタンを配置するのか。
>
>・常に同じ名前で良いのか、C:\2000年.xlsの様にしたいのか。
>
>・同じ名前のファイルがあったらどうするのか。

そうですよね。説明不足ですみません。
・コンボボックスで更新したら、毎回はエクスポートはしませんが、
 エクスポート用のコマンドボタンを配置して、データが欲しい時に
 ボタンを押すといった感じです。

・名前は、名前をつけて保存の様にしたいのです。(自分の好きな名前)

・同じ名前のファイルがあったら、上書きでOKです。

今、違うデータのエクスポートでオブジェクトにこんなマクロを作ったのですが、
名前をつけて保存をしたいのですが、出来ないのです。
別で質問を出そうかと思っていたのですが、これもご一緒の質問でいいですか?
上記の件は、このマクロでは出来ないと思いますので、他で使用したいです。

・アクション=出力
・オブジェクトの種類=フォーム
・オブジェクト名=F_判定日ブランク
・出力ファイル形式=Microsoft Excel (*.xls)
・出力ファイル=D:\UserArea\デスクトップ\判定日付全てブランク.xls
 ↑
 これを、毎回好きな名前にしたいのです。
・自動起動=いいえ

毎度出来の悪い私ですが、どうか、よろしくお願いします。

【6916】Re:クエリでマクロを組んだものを、エクス...
回答  小僧  - 05/12/6(火) 13:24 -

引用なし
パスワード
   ▼サチチ さん:
こんにちは。

>・名前は、名前をつけて保存の様にしたいのです。(自分の好きな名前)

ちょっとこちらに苦労していたのですが、
Excelのファイルダイアログを使ってみました。
バージョン依存なので、うまく行かなかったら他のを考えてみます。

Private Sub Excel出力_Click()
'要参照 DAO x.x Object Library
Dim xlsApp As Object
Dim xlsWkb As Object
Dim xlsSht As Object
Dim QD As DAO.QueryDef
Dim RS As DAO.Recordset
Dim i As Long
Dim strField As String

Const QName = "クエリ3年"
Const Ex_msoFileDialogSaveAs = 2

  If IsNull(Me.txt年) Then
    MsgBox "年を入力してから実行してください。"
    Exit Sub
  End If
    
  Set QD = CurrentDb.QueryDefs(QName)
    QD.Parameters(0).Value = Me.txt年.Value
  Set RS = QD.OpenRecordset
  
  Set xlsApp = CreateObject("Excel.Application")
    xlsApp.Visible = True
  Set xlsWkb = xlsApp.Workbooks.Add
    With xlsWkb.Sheets("sheet1")
      For i = 1 To RS.Fields.Count
        strField = RS(i - 1).Name
        If InStr(1, strField, "年目") > 0 Then
          strField = Me.txt年 + Val(strField) - 1 & "年"
        End If
        .Cells(1, i).Value = strField
      Next
        .Range("A2").CopyFromRecordset RS
    End With
    
    With xlsApp.FileDialog(Ex_msoFileDialogSaveAs)
      .Show
      If .SelectedItems.Count = 0 Then
        xlsWkb.Saved = True
      Else
        xlsApp.DisplayAlerts = False
          xlsWkb.SaveAs .SelectedItems(1)
        xlsApp.DisplayAlerts = True
      End If
    End With
    
    xlsWkb.Close: Set xlsWkb = Nothing
    xlsApp.Quit: Set xlsApp = Nothing
  RS.Close: Set RS = Nothing
  QD.Close: Set QD = Nothing
End Sub

>Const QName = "クエリ3年"

の行は現在使用しているクエリの名前に変更して下さい。


>別で質問を出そうかと思っていたのですが、これもご一緒の質問でいいですか?

殆ど VBA で作成しているので、マクロは苦手だったりします^^;

>・出力ファイル=D:\UserArea\デスクトップ\判定日付全てブランク.xls
> ↑
>これを、毎回好きな名前にしたいのです。

出力ファイルを指定する欄を空白にすると、
ファイルをどこに保存するかのダイアログが出現しますが、
そちらでは駄目なのでしょうか。

【6917】Re:クエリでマクロを組んだものを、エクス...
質問  サチチ  - 05/12/6(火) 14:16 -

引用なし
パスワード
   ▼小僧 さん:

こんにちは!いただいた、イベントをそのまま貼り付け、コマンドボタンの
名前にExcel出力とし、やってみたのですが、こんなエラーが出ました。

"コンパイルエラー ユーザー定義型は定義されていません"

>Private Sub Excel出力_Click()
>'要参照 DAO x.x Object Library
>Dim xlsApp As Object
>Dim xlsWkb As Object
>Dim xlsSht As Object
>Dim QD As DAO.QueryDef
↑ここが、ブルーになります。


>Const QName = "クエリ3年"
は、クエリ管理開始5年 という名前なので、変更しました。

>出力ファイルを指定する欄を空白にすると、
>ファイルをどこに保存するかのダイアログが出現しますが、
>そちらでは駄目なのでしょうか。

初めて知りました!毎回、ためになります。これでOKです。
こちらは、名前をつけて、保存に成功です!!ありがとうございます。

【6918】Re:クエリでマクロを組んだものを、エクス...
発言  小僧  - 05/12/6(火) 14:26 -

引用なし
パスワード
   ▼サチチ さん:
こんにちは。

[#5317] と一緒ですね ^^;

もう一度確かめてみて下さい。

【6919】Re:クエリでマクロを組んだものを、エクス...
お礼  サチチ  - 05/12/6(火) 14:56 -

引用なし
パスワード
   ▼小僧 さん:

>[#5317] と一緒ですね ^^;

すみません。以前教わっていたのに、頭から、すっぽり
抜けてました。_(_^_)_

出来ました!!なんてすばらしいのでしょう♪
毎回、感動しまくりです。
今回も助けていただき、ありがとうございました。

この仕事も、私は2月末までで終了です。
私事ですが、今後はママになる予定です。それまで、何かある?かも?
なので、またご教授願います。

              お腹のデカイ、サチチでした!

1489 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free