人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ACCESS2010に関してです

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

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


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

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

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

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

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


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

●質問者: zaq12wsx0
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:Excel いただきます イベント コピー ファイル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● degucho
●334ポイント

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

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

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

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

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

技術的には可能です。


2 ● こうた\(^o^)/
●333ポイント

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

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

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

もっとくわしく、

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

◎質問者からの返答

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

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

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


3 ● km1981
●333ポイント

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

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ