ACCESS2010に関してです


過去履歴でも、似たようなものがあったのですが
下記の条件を合わせると上手く動作せず途方に暮れて、
こちらに質問いたします。

次のようなことを考えています。
言葉足らずな箇所がありましたら補足させていただきます。


1 ”保存”ボタンを押す。

2 "レポート1”、"レポート2”の内容を
  同じEXCELファイル、”SHEET1"、"SHEET2"へ内容をコピーする。

3 EXCELファイル名は、 "DATA" に加えて作業を行った日付を設定。 

4 EXCELファイルを場所へ作成する場所をユーザーが選択し、保存。

と、云う内容をイベントプロシージャへ記述したいのですが
お知恵を拝借できないでしょうか?


当方の判断で申し訳ないのですが、最善な回答をくださった方には
1000ポイントのお礼をお支払いさせていただきます。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/24 23:11:54
  • 終了:2011/07/31 23:15:03

回答(3件)

id:degucho No.1

degucho回答回数260ベストアンサー獲得回数692011/07/25 00:48:30

ポイント334pt

基本的には下記のようにExcelをOLE操作する形になると思いますが

レポートを直接変換するのは難しいので

Excelに差し込み印刷をするように作ることになると思います

http://www.accessclub.jp/samplefile/samplefile_204.htm

http://officetanaka.net/excel/vba/file/file02.htm

技術的には可能です。

id:km1026 No.2

こうた\(^o^)/回答回数148ベストアンサー獲得回数52011/07/28 08:13:43

ポイント333pt

http://office.microsoft.com/ja-jp/access-help/HA010341516.aspx

もし内容が違ったら、すぐに

違うと返信してください。

ちょっと混乱してしまって。

http://www.hotdocument.net/document/Access2010.html

あと、コピペです。

【フォーム】

※名前は任意でOk。

 <その他>タブ

  『ポップアップ』 = はい

  (『作業固定』は「いいえ」)

 <イベント>タブ

  『開くとき』イベント = 「[イベント プロシージャ]」

  『キークリック時』イベント = 「[イベント プロシージャ]」

  『キーボードイベント取得』 = 「はい」

【コントロール】

・『フォーム』コンボボックス: 対象フォームを指定

 <データ>タブ

  『値集合タイプ』 = 「値リスト」

 <イベント>タブ

  『更新後処理』イベント = 「[イベント プロシージャ]」

  『ダブルクリック時』イベント = 「[イベント プロシージャ]」

・『コントロール』コンボボックス: 対象コントロールを指定

 <データ>タブ

  『値集合タイプ』 = 「値リスト」

 <イベント>タブ

  『更新後処理』イベント = 「[イベント プロシージャ]」

  『ダブルクリック時』イベント = 「[イベント プロシージャ]」

◆コード◆

Option Compare Database

Option Explicit

'対象フォーム・対象コントロールを保持するための変数

'(モジュールレベル(=つまり’ここ’)での宣言が必要)

Private myFrm As Form, myCntl As Control

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  Dim nLeft As Long, nTop As Long, nAddL As Long, nAddT As Long

  

  If Shift Then

    'Ctrl/Shift/Altキーの同時押し時は対象外

    Exit Sub

  ElseIf myCntl Is Nothing Then

    '対象コントロール未設定時も対象外

    Exit Sub

  Else

    '対象コントロールの位置を取得

    nLeft = myCntl.Left

    nTop = myCntl.Top

  End If

  'カーソルキー毎に移動量を設定

  '(それ以外のキーは対象外)

  '※「±10」は適当に調節してください。

  ' (pixel/twipの換算を正直にやると更に厄介になるので(汗))

  Select Case KeyCode

    Case vbKeyDown

      nAddL = 0

      nAddT = 10

    Case vbKeyUp

      nAddL = 0

      nAddT = -10

    Case vbKeyLeft

      nAddL = -10

      nAddT = 0

    Case vbKeyRight

      nAddL = 10

      nAddT = 0

    Case Else

      Exit Sub

  End Select

  '上記で設定した値に基づいてコントロールを移動

  Call myCntl.Move(nLeft + nAddL, nTop + nAddT)

  'キー入力を取り消し

  KeyCode = 0

End Sub

Private Sub Form_Open(Cancel As Integer)

On Error Resume Next

  Dim Mem As Variant, sRS As String

  '展開中の全フォームを、『フォーム』コンボボックスの

  'リストに設定

  sRS = "''"

  For Each Mem In Forms

    If Mem.Name <> Me.Name Then

      sRS = sRS & ";" & Mem.Name

    End If

  Next

  フォーム.RowSource = sRS

  フォーム = Screen.ActiveForm.Name

  Call フォーム_AfterUpdate

End Sub

Private Sub コントロール_AfterUpdate()

  Dim Cntl As Control

  '対象コントロールを設定/解除

  If IsNull(コントロール) Then

    Set myCntl = Nothing

  Else

    Set myCntl = myFrm.Controls(コントロール)

  End If

End Sub

Private Sub コントロール_DblClick(Cancel As Integer)

  Dim Mem As Variant, sRS As String

  '対象フォームのコントロール群を、『コントロール』コンボ

  'ボックスのリストに設定(フォーム未設定時は解除)

  If myFrm Is Nothing Then

    sRS = ""

  Else

    sRS = "''"

    For Each Mem In myFrm.Controls

      sRS = sRS & ";" & Mem.Name

    Next

  End If

  Set myCntl = Nothing

  コントロール.RowSource = sRS

  コントロール = Null

End Sub

Private Sub フォーム_AfterUpdate()

  Dim Mem As Variant, sRS As String

  '対象フォームを設定/解除

  If IsNull(フォーム) Then

    Set myFrm = Nothing

  Else

    Set myFrm = Forms(フォーム)

  End If

  Call コントロール_DblClick(False)

End Sub

Private Sub フォーム_DblClick(Cancel As Integer)

  '『フォーム』コンボボックスのリストを更新

  '(フォームの『開くとき』イベントのコードを呼び出し)

  Me.Visible = False

  Call Form_Open(False)

  Me.Visible = True

End Sub

本当に違っていたらすぐに教えてくださいよ。

どこが違うか教えてくれたら

もっとくわしく、

または違う内容で説明し直します。

id:zaq12wsx0

ご親切にありがとうございます。

現状、私のレベルを大きく超えているお答えなので

判断にもう少々お時間をください。

2011/08/01 22:02:39
id:km1981 No.3

km1981回答回数429ベストアンサー獲得回数492011/07/31 13:01:06

ポイント333pt

何を回答すればいいのですか?

要件を満たすプロシージャをすべて書けということですか?

id:zaq12wsx0

プロシージャがすべてあるのは最高ですが、

今回は、初学者自分の程度での解決策への取っ掛かりでも十分です。

2011/08/01 22:05:11

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません