ネットが遅くてイライラしてない!?

どなたか教えてください!
やりたい事はこんな事です。

(1)とあるテーブルを毎日Excel/テキスト/csvどの形でも良いので、決まったフォルダにエクスポートする。

(2)エクスポートする際、前日分を上書しないように、ファイル名の末尾もしくは頭に日付を入れたい。

これだけなんです。
出来ればVBAは組まずに済ませたいのです。
マクロでなんとか出来ないでしょうか?

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

A 回答 (1件)

Access2000では以下の操作でできます。

Excelファイルでエクスポートします。

[1]マクロを新規作成する
[2]アクションで「ワークシート変換」を選択
[3]アクションの引数を以下のように指定する
  変換の種類:エクスポート
  ワークシートの種類:(出力したいExcelのバージョンを選択)
  テーブル名:(出力するテーブル名)
  ファイル名:="c:\test\tablehoge" & Format(Now(),"yyyymmdd") & ".xls"
  フィールド名の設定:(フィールド名を出力するときは"はい")
  範囲:(空白のままでよい)
[4]メニューの[ファイル]-[名前を付けて保存]でマクロを保存する
[5]マクロのウインドウを閉じる

あとはこのマクロを実行すればExcelファイルにエクスポートできる。

ファイル名のところは先頭の"="を忘れないように(半角で)。
日付に加えて時刻も欲しければFormat(Now(),"yyyymmdd_hhnnss")とか。

2000じゃないと違うかもしれない。
    • good
    • 0
この回答へのお礼

わあああー!
ありがとうございます!
出来ました!(感涙)
すごく助かりました。

お礼日時:2005/06/30 21:05

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

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

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

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

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

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

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

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

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

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

Aベストアンサー

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

参考URL:http://okwave.jp/qa1482781.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→Excelへエクスポートすると日付の表示形式が変化する

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

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

よろしくお願いします。

Aベストアンサー

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

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

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


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

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で空白のデーターをクエリで判定/識別する方法を教えてくださ

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

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

Aベストアンサー

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

QACCESS でインポートファイル名とエキスポートファイル名を変数にしたい

ACCESSで ファイルインポート-->データ加工-->ファイルエキスポート-->インポートしたデータテーブルを削除 という処理を行っています。
ファイル名が担当者毎に違うので担当者分(20人分)ファイル名を変えてACCESSを作成しています。
なので、仕様変更があると20コのACCESSを変更しなければいけません。ファイル名を変数にすればACCESSは1つで良いのではと考えたのですが、その方法がわかりません。どうか教えて下さい。
ACCESS 2002


担当者Aならインポートファイル名 INFILE.A.TXT エキスポートファイル名 OUTFILE.A.TXT 
担当者Bならインポートファイル名 INFILE.B.TXT  エキスポートファイル名 OUTFILE.B.TXT  

データ加工(処理)の内容は同じです。

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

Aベストアンサー

営業所・担当者名のテーブルを作成し
営業所単位(あるいは全ての営業所)のレコードセットを開き

Dir関数でファイルの存在を確認しつつ
(dir "infile_" & rs!担当者名 & ".txt")
その処理を行う
終わったらファイルを別のフォルダなどに退避
レコードセットの終了までLoop
とか?

あるいは・・
/cmd コマンドラインオプションと、Command関数の組み合わせも
検討されてみては?

QAccessからExcelへエクスポートするときにファイル名を指定したい。

Access2002を使用しています。
Accessで集計した結果をExcelへエクスポートしています。
Accessのフォームで集計する範囲を設定し、コマンドボタンをクリックするとExcelのへエクスポートしています。
このとき、Excelのファイル名を次のように設定したいのですが・・・
 売上表200607.xls
売上表は常に同じで、”200607” が集計する範囲で異なります。
このようなことは可能でしょうか?
以上、よろしくお願いします。

Aベストアンサー

集計する範囲の指定をどのようにしているかわかりませんが、
文字列で [年月] に "200607" と入力していると仮定して

Dim YM As String
YM = Me.年月 '※ 範囲の指定方法によってここを変えます。
DoCmd.TransferSpreadsheet acExport, 8, "Q_URIAGE", "c:\売上表" & YM & ".xls", False, ""

※例
年と月が別のテキストボックスだったら
 YM = Me.年 & Format(Me.月,"00")

日付型で入力しているなら
 YM = Format(Me.開始日,"yyyymm")
のように。

その他の場合、ファイル名決定の元になる情報を補足してください。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む

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

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

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

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

Aベストアンサー

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング