DoCmd.OutputTo acOutputQuery, "クエリ1", "MicrosoftExcelBiff8(*.xls)"

のように
クエリをエクセルへエクスポートしたときに
もともと「2009/05/27 23:21:00」と入力されていた(DATE型の)日付の形式が
エクスポート後は「27-May-09」に変わってしまいます。
そのままの書式でエクスポートするにはどうすればいいですか?

よろしくお願いします。

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

A 回答 (2件)

> そのままの書式でエクスポートするにはどうすればいいですか?



確認したところ、
 1)クエリで書式設定あり
  → クエリの書式設定を反映
 2)クエリで書式設定なし・テーブルで書式設定あり
  → テーブルの書式設定を反映
 3)クエリ・テーブルとも書式設定なし
  → Excel側(OS側?)の設定で表示
となるようです。
(Accessでの書式設定が、Excelの『セルの書式設定』に引き継がれる)

ですので、テーブルかクエリで、日付表示フィールドで明示的に
書式を設定してやれば、Excel側もその設定に従った書式で
表示するようになると思います。


※テーブルの場合は、デザインビューの左下の『標準』タブの
  『書式』で設定できます。
※クエリの場合は、デザインビューで開いた後、Alt+Enter等で
 プロパティシートを表示し、画面下半分(フィールド追加領域)
 で対象フィールドを選択してフィールドのプロパティを表示させ、
 『標準』タブの『書式』で設定します。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。参考になりました。

お礼日時:2009/05/29 23:30

基本的なデーターは 変わってません。


日付の表示形式が Exell 側で変わってるので
表示形式を選べば ご希望の様に見えます。

日付の表示についての詳細は Help で確認して下さい。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2009/05/28 23:24

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

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
...続きを読む

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

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

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

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

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

Aベストアンサー

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

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

Qアクセス データエクスポートの形式について(時刻の削除)

アクセスのテーブルに型が「日付/時刻型」で、デザインの書式が「日付(S)」となっているフィールドがあります。従って見た目上では、2008/04/1のような形式をしていますが、csv形式にてエクスポートした際に「2008/4/1 0:00:00」となってしまい、時刻が追加されてしまいます。これの時刻を省いた形式で直接アクセスからエクスポートしたいのですが、アクセス上で何を修正すればよいのでしょうか。

すみませんが、どなたか教えてください。

Aベストアンサー

tab1:

ID__年月日______単価__数量
1___2008/04/01__\100_____1
2___2008/04/01__\200_____0

の出力結果です。

1,2008/04/01,\100,1.00,2008/4/1 0:00:00
2,2008/04/01,\200,0.00,2008/4/1 0:00:00

SELECT tab1.ID, Format([年月日],"yyyy/mm/dd") AS 売上日, tab1.単価, tab1.数量, *
FROM tab1;

Format関数で整形している[売上日]に当然のことですが時刻データはありません。
非整形で * 出力している[年月日]には当然のことですが時刻データが付いています。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QACCESSのデータをEXCELにコピーすると日付が必ずYYYY/MM

ACCESSのデータをEXCELにコピーすると日付が必ずYYYY/MM/DD→DD-MONTH-YYになります。書式を変えずにコピーする方法を教えてください。

WIX XP SP3
ACCESS 2007

Aベストアンサー

横レス失礼致します。

> TABLEの書式で対処できないものでしょうか。

Access側で既にyyyy/mm/ddで表示されている状態だと
思いますが、その上でなお、テーブルのデザインビューで
対象フィールドに「yyyy/mm/dd」の書式を指定すると、
Copy&Pasteした場合でもExcelに書式が引き継がれる
ようになります。

別の方法としては、Excelへの貼付時に「形式を選択して
貼り付け」で「Unicode」などを指定、というのもありますが、
その都度、手間が発生しますので、上記の方がいいかと
思います。


ちなみに、Excelへの出力(エクスポート)の場合も、同様に
『書式』の設定が反映されますので、併せて参考まで:
http://questionbox.jp.msn.com/qa4160749.html

Qアクセスでエクセルに出力する際のファイル名を日付に

Access2010でレポートをエクセルに出力しています。
マクロで出力していますが、都度フォルダを選び、ファイル名を入力しなくてはなりません。
フォームのボタンをクリックすれば自動的に出力されるようにしたいのです。
出力先フォルダは決まっています。
ファイル名は当日の年月日で保存したいです。
どのようにすればいいのか教えてください。

Aベストアンサー

No1です。
同じ名前のファイルが存在した場合の処理を
付加しておきます。それと、一部変更します。



Private Sub コマンド0_Click()
  Dim strReportName As String
  Dim strPath As String
  Dim strFileName As String

  '対象のレポート名
  strReportName = "r1"
  出力先のフォルダ名
  strPath = "C:\Documents and Settings\user\デスクトップ\OKWeb2\登録Web1"
  '出力するExcelのファイル名
  strFileName = strPath & "\" & Format(Date, "yyyy" & "mm" & "dd")

  DoCmd.OpenReport strReportName, acViewPreview
  If MsgBox("レポートをExcelへ転送しますか", vbYesNo) = vbYes Then
    If Dir(strFileName & ".xls") = "" Then
      DoCmd.SetWarnings False
      DoCmd.OutputTo acOutputReport, strReportName, acFormatXLS, strFileName & ".xls", True
      DoCmd.SetWarnings True
    Else
      If MsgBox("同じ名前のファイルがあります。上書きしますか", vbYesNo) = vbYes Then
        DoCmd.SetWarnings False
        DoCmd.OutputTo acOutputReport, strReportName, acFormatXLS, strFileName & ".xls", True
        DoCmd.SetWarnings True
      Else
        DoCmd.Close acReport, strReportName
        Exit Sub
      End If
    End If
  End If
  DoCmd.Close acReport, strReportName
End Sub


なお、レポートをすでに開いている場合には、
コード中の、

DoCmd.OpenReport strReportName, acViewPreview
DoCmd.Close acReport, strReportName

などは、コメントアウトするか削除してください。

No1です。
同じ名前のファイルが存在した場合の処理を
付加しておきます。それと、一部変更します。



Private Sub コマンド0_Click()
  Dim strReportName As String
  Dim strPath As String
  Dim strFileName As String

  '対象のレポート名
  strReportName = "r1"
  出力先のフォルダ名
  strPath = "C:\Documents and Settings\user\デスクトップ\OKWeb2\登録Web1"
  '出力するExcelのファイル名
  strFileName = strPath & "\" & Format(Date, "yyyy" & "mm" & "dd")

  DoCmd.Open...続きを読む

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

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を見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報