ちょっと変わったマニアな作品が集結

クエリ出力は以下でできたのですが、
ワークシート名がQ_testのみで上書きになります。
Excel出力時に、Q_testxx (x=月)にしたいです。

Function M_test()
On Error GoTo M_test_Err

DoCmd.TransferSpreadsheet acExport, 8, "Q_test", "c:\test.xls", False, ""

M_test_Exit:
Exit Function

M_test_Err:
MsgBox Error$
Resume M_test_Exit

End Function

このQ&Aに関連する最新のQ&A

A 回答 (1件)

なぜ、Function モジュールにしているか?ですが。


Function M_test()
On Error GoTo M_test_Err

'DoCmd.TransferSpreadsheet acExport, 8, "Q_test", "c:\test.xls", False, ""
'↓
docmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel8 _
,"Q_test","c:\test.xls",hasfieldnames:=false,range:="Q_test" & format(month(date()),"mm")

M_test_Exit:
Exit Function

M_test_Err:
MsgBox Error$
Resume M_test_Exit

End Function

では?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSでクエリで選択した行番号をつけたい

選択結果に1~順に番号をつけたいのですが、過去ログを見ると 番号: DCount("*","データ","[NO]<=" & [NO])とすればいいと書かれてありました。これはNOが昇順になっている場合にしか1~順になりません。
NOはユニークですが、他のフィールドで昇順にしたい場合はどうすればいいのですか?
例)
NO フリガナ
312 タナカ
322 イトウ
333 マツダ
・・・・
番号 フリガナ(昇順)
2 イトウ
1 タナカ
3 マツダ
となってしまうのです。
ACCESS2002

どうぞよろしくお願いします。

Aベストアンサー

 ん~多分、

番号: DCount("*","テーブル名","[フリガナ]&[NO]<='" & [フリガナ] & [NO] & "'")

でいけると思いますが、だめだったら、

番号: DCount("*","テーブル名","[フリガナ]<'" & [フリガナ] & "' OR ([フリガナ]='" & [フリガナ] & "' AND [NO] <= " & [NO] & ")")

かな?

QACCESS側からEXCELの書式を設定するには?

ACCESSからEXCELにエクスポートした際、ACCESS側でEXCELの書式設定は行えますか?(例:セルAの幅がX桁等)

データ件数が多すぎて、下記VBでエクスポート処理をしています。

DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, ""

お手数ですが、ご教授願います。

Aベストアンサー

例えばボタンにエクスポートの処理を書いているのでしたら
ボタンをCmd1とすると

Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, ""

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\XX.xls")
Set xlSheet = xlBook.Worksheets(1)

xlApp.Cells.Select
xlApp.Cells.EntireColumn.AutoFit
xlApp.Range("A1").Select
xlApp.Visible = False

xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

Exit_Cmd1_Click:
Exit Sub

Err_Cmd1_Click:
MsgBox Err.Description
Resume Exit_Cmd1_Click

End Sub

こんな感じで記述してください。

#1の中でxlApp.DisplayAlerts = False これは除いてください。保存しますかのメッセージが出ます。

例えばボタンにエクスポートの処理を書いているのでしたら
ボタンをCmd1とすると

Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, ""

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\XX.xls")
Set xlSheet = xlBook.Worksheets(1)

xlApp.Cells.Select
...続きを読む

QAccess2000で抽出したデータに連番をふるには

下表のようにIDが1から10まであるテーブルからID3、6を抽出しました。これにID3には連番1、ID6には2と抽出したデータに連番をふりたいです。どうしたら良いですか。教えてください。

ID 会社名 連番
3 A社
6 B社

 

Aベストアンサー

すみません。中間の説明が、かなり手抜いてますので、申し訳ありませんでした。

> マクロを組むということでしょうか。

えっと、違います。
下記の文章のことを言っているものだと思いますが・・・。

> SELECT
> クエリ.ID,
> クエリ.会社名,
> DCount("ID","クエリ","ID <=" & [クエリ]![ID]) AS 連番
> FROM クエリ;

これは、SQL文と言って「Select ~ From ~ Where ~ ;」で構成されるクエリーの文章です。
クエリーをデザインビューで開き、表示-SQLビューにすると、これに似た文章が出てきます。

最初の抽出したクエリー
> ID 会社名
> 3 A社
> 6 B社
の名前を「クエリ」で保管してみて、その後、新規にクエリを作成し、SQLビューにて「Select ~ ;」の部分をコピー&ペーストで貼り付けて、デザインビューに直すと、記述している意味が見慣れたデザインビューで確認できます。
(ユニオンクエリーの場合、デザインビューに変更して確認は出来ませんけどね。これは、ユニオンクエリーではありませんので・・・。)

GUI(グラフィカルユーザーインターフェース)の部分を文章で説明していくのは難しいので、手抜きでSQL文(クエリー文)だけUpしてました。

他にも、手はあるのですが・・・更新可能なクエリーを生成する場合は、思いつく手は、このくらいかなと^^;

すみません。中間の説明が、かなり手抜いてますので、申し訳ありませんでした。

> マクロを組むということでしょうか。

えっと、違います。
下記の文章のことを言っているものだと思いますが・・・。

> SELECT
> クエリ.ID,
> クエリ.会社名,
> DCount("ID","クエリ","ID <=" & [クエリ]![ID]) AS 連番
> FROM クエリ;

これは、SQL文と言って「Select ~ From ~ Where ~ ;」で構成されるクエリーの文章です。
クエリーをデザインビューで開き、表示-SQLビューにすると、これに...続きを読む

Qアクセスからエクスポートするファイル名に日付を入れたい

アクセス2003を使用しています。

エクセルからデータをインポートして、データ加工後、エクセルにエクスポートさせるように作成中です。

マクロで
エクスポートするファイル名に日付を自動で設定せたいのですが、方法が判りません。
例)処理後20070824.xls 

どうか教えてください。よろしくお願いいたします。

Aベストアンサー

昔の回答で悪いけど参考にしてください。バージョン違いでうまくいかなかったらご勘弁。

参考URL:http://okwave.jp/qa1482781.html

QAccess DCountでの連番について

DCountで連番を追加したいのですが演算対象条件の記述方法が良く分かりません。
調査用品別販売データクエリの商品コードフィールドに対して連番を振りたいです。
商品コード、連番
00110 1
00110 2
00120 1
00120 2
上記のようにしたいのですが
式1: DCount("商品コード","調査用品別販売データ","商品コード=" & [調査用品別販売データ]![商品コード])
これではエラーが出てしまいます。

Aベストアンサー

商品コードと同じようにしてやればいいのです

連番:式1: DCount("*","調査用品別販売データ","商品コード='" & [商品コード] & "' and ID <='" & ID & "'")

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QAccessの桁区切りについて教えてください。

アクセスのレポートの金額に、桁区切りのカンマを付けたいと思っています。
プロパティの書式を通貨にすると¥マークがついてしまいます。
合計は付いてもいいのですが、内訳には¥マークを付かないように桁区切りだけにしたいのです。

そのため、書式に『###,##0』としました。
できましたが、小数点以下が表示されません。

小数点を表示したいので『###,##0.###』としたら、『59,180.000』となってしまいます。
小数点の指定を自動から3桁表示に変えましたが、うまくいきません。

教えていただきたい内容としては、
・金額の表示に桁区切りのカンマを付けたい。
・でも¥マークは付けたくない。
・小数点以下該当があるもののみ3桁まで表示させたいが(5,500.365)、
 小数点以下がないものは小数点以下は表示させたくない(5,400)。

ぜひともアクセスを使いこなしている方、お教えください。

Aベストアンサー

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 貼り付けます。

・フォームのレコードソースにするためのクエリを作成します。
 必要なフィールドをQBEグリッド(画面の下側)にドラッグした後、
 新規フィールドに 例えば、 金額Txt:Valtxt([金額]) と入力します。

・レポートの[金額]のコントロールソースに、この[金額T]を指定します。
 この書式で「配置」を右に設定します。

これで、少数部がない数値は、整数部だけを表示し、位取りの , が付きます。
小数部がある場合は、4位を四捨五入します。(通常と同じ)
その結果、右側に 0 が付いた場合は、表示しません。

ご承知の上とは思いますが、表形式の場合、少数点位置が揃わなくなりますので
見ずらくなってしまいます。

このようなもので如何でしょうか。

Function Valtxt(V As Double) As String
Dim T As String
Dim N As Integer
T = Format(V, "#,##0.000")
For N = Len(T) To InStr(T, ".") Step -1
  If Mid(T, N, 1) = "0" Then
    T = Left(T, N - 1)
  Else
    Exit For
  End If
Next N
If Right(T, 1) = "." Then T = Left(T, Len(T) - 1)
Valtxt = T
End Function

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 ...続きを読む

Q"カレントレコードがありません"とでてきます

Access97を使用しています。

データは テーブルAの項目B、項目Cが下記のようにあるとします。
フォーム上のText"B"に項目Bを入力します。

項目B項目C
11a
11b
22aa
22bb
22cc
33aaa
33ccc

この時
Set DB = CurrentDb()
strSQL = "SELECT * FROM A WHERE "
strSQL = strSQL + "B='" & Me.B & "';"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
RS.MoveFirst
RS.MoveLast
m = RS.RecordCount
For i = 1 To m
COIL_N = RS.Fields("C")
Call RS.MoveNext
Next i

上記のようなモジュールですが、例えば
項目Bの"11"を選んだ時、項目Cの二番目のデータbが 取得できません。
"カレントレコードがありません"とでてきます。何故でしょうか?

Access97を使用しています。

データは テーブルAの項目B、項目Cが下記のようにあるとします。
フォーム上のText"B"に項目Bを入力します。

項目B項目C
11a
11b
22aa
22bb
22cc
33aaa
33ccc

この時
Set DB = CurrentDb()
strSQL = "SELECT * FROM A WHERE "
strSQL = strSQL + "B='" & Me.B & "';"
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
RS.MoveFirst
RS.MoveLast
m = RS.RecordCount
For i = 1 To m
COIL_N = RS.Fields("C")
Call RS.Mo...続きを読む

Aベストアンサー

RS.MoveLast
した時点で、レコードセットの最終レコードがカレントになっていますよね
その後
RS.MoveNext
すれば、EOFになりますからカレントは無くなります。

恐らくレコードセットの1レコード目は、bで2レコード目がaなのでは?
その辺は、キー設定がどのようになっているかに依存しますから。

QAccess-VBAでExcelファイルを作成する。

こんにちわお世話になります。

「Excelにエクスポート」ボタンをクリックすると、Inputboxか何かが表示されて、Pathやファイル名やシート名を入力し、「実行」ボタンを押すと、新規にExcelのBookを、そのPath、ファイル名、シート名で作成する。その後、そのシートにデータを書き込むという作業をしたいのです。
AccessのデータをExcelの任意のシートを開いて書き込むという部分のVBAコードはわかりますので、新規Book作成部分のコードがわかるかたお願いします。
Office97を使用しています。

Aベストアンサー

プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryにチェックを入
れて下さい。

オブジェクトへの参照を格納する変数を事前バインディング。
変数にオブジェクトの参照を代入します。Addメソッドを使って新規workbookと
worksheet オブジェクトを作成します。
値を代入し名前を付けて保存してオブジェクトを開放する。という流れで良いと
思います。

Private Sub Command1_Click()

  On Error Resume Next

  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)

  ' Excel のセルに値を代入します。
  xlSheet.Cells(1, 1).Value = " "

  ' Worksheet を名前をつけて保存します。ダイアグボックス等を使用して
   パスやBook名など入力できるようにしてもOKです。
  xlSheet.SaveAs "c:\Temp.xls"

  xlApp.Quit

  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing
End Sub

こんな感じでしょうか。

プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryにチェックを入
れて下さい。

オブジェクトへの参照を格納する変数を事前バインディング。
変数にオブジェクトの参照を代入します。Addメソッドを使って新規workbookと
worksheet オブジェクトを作成します。
値を代入し名前を付けて保存してオブジェクトを開放する。という流れで良いと
思います。

Private Sub Command1_Click()

  On Error Resume Next

  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html


人気Q&Aランキング