【復活求む!】惜しくも解散してしまったバンド|J-ROCK編

Private Sub cmd出力ボタン_Click()
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acExport, 8, "出力クエリ", "C:データ.xlsx", True, ""
DoCmd.SetWarnings True

End Sub

実行すると

外部テーブルのフォーマットが正しくありません

と出てしまいます。
エクセル97の形式にエクスポートする際は大丈夫でした。
spreadsheettypeの引数が違うのかとは思いますが適切な数値がわかりません。
他のやり方等もあれば教えて下さい。

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

A 回答 (3件)

 DoCmd.TransferSpreadsheet acExport, 8, "出力クエリ", "C:データ.xls", True, ""



これ試されましたか? .xlsはEXCEL2000の拡張子 です。
ACCESS2000からEXCEL2000へのエクスポートですから出来るはずです。

またエクセル2010は下位のヴァージョンのエクセルファイルは読めるので
一旦読んで名前を付けて保存にするとどちらのヴァージョンでも書き込みは出来ます
「アクセス2000→エクセル2010へエク」の回答画像3
    • good
    • 0
この回答へのお礼

丁寧な説明ありがとうございます。
出力先のエクセルの方で2010の機能を使った表を組んでいたため、なるべくバージョンを落としたくなかったのですが、下位互換で機能を捨て、すべてエクスポート前にaccess側で処理させるようにしようと思います。

お礼日時:2013/03/15 11:04

・出力クエリーを開くとデーターが表示されますか


 データの無いテーブルまたはクエリーをエクスポートするとエラーになります。

・アクセス2000はエクセル2010より前のヴァージョンですので
 このヴァージョンに対応していないのではないですか
 DoCmd.TransferSpreadsheet acExport, 8, "出力クエリ", "C:データ.xlsx", True, ""を
 DoCmd.TransferSpreadsheet acExport, 8, "出力クエリ", "C:データ.xls", True, ""に変更してください
    • good
    • 0
この回答へのお礼

対応していないですよね。当面は97互換ファイルにして対応します。

お礼日時:2013/03/14 16:45

ö.....


そりゃ、無理だよ。
アクセス2000はエクセル2010より10年も前の製品なんだから、.xlsx をサポートしているはずがない。

ちなみに、サポートされているなら、引数の値は acSpreadsheetTypeExcel12Xml で 10 だ。
    • good
    • 1
この回答へのお礼

やはりそうですか。バージョンアップを考えます。ありがとうございます。

お礼日時:2013/03/14 16:44

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

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

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

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

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

Qエクセルからアクセスにインポートする際のエラーについて

こんにちは。
エクセルで作成された従業員台帳を、アクセスにインポートしたいのですが、エラーが出て困っています。

インポートの為のフォームを作り、参照ボタンでそのエクセルファイルを選択してフルパスを取得し(こちらの動作はOKです)、実行ボタンでそのファイルをインポートする、という方法をとろうと思います。

transferspreadsheet で、エクセルのファイル(.xls)は問題なくいくのですが、csv形式のファイルを指定して同じようにインポートすると、
実行時エラー 3274 外部テーブルのフォーマットが正しくありません。 となってしまいます。

書いているコードは、
DoCmd.TransferSpreadsheet acImport, 8, "従業員台帳(アクセス側でのテーブルの名前)", "上記画面で取得したフルパス", True(一番上の項目をフィールド名として使用します), ""

です。.xlsでも.csvの形式でもインポートできるようにしたいのです。

環境は、winXPpro、Access2000、Excel2000 です。
よろしくお願いします。

こんにちは。
エクセルで作成された従業員台帳を、アクセスにインポートしたいのですが、エラーが出て困っています。

インポートの為のフォームを作り、参照ボタンでそのエクセルファイルを選択してフルパスを取得し(こちらの動作はOKです)、実行ボタンでそのファイルをインポートする、という方法をとろうと思います。

transferspreadsheet で、エクセルのファイル(.xls)は問題なくいくのですが、csv形式のファイルを指定して同じようにインポートすると、
実行時エラー 3274 外部テーブルのフォ...続きを読む

Aベストアンサー

TransferSpreadsheet ではなく
TransferText を使用してみてください。

詳細はヘルプをご覧下さい。

QAccessからExcelへエクスポートするVBA

いつもお世話になっております。

AccessのクエリからデータをExcelにエクスポートします。
形式はMicrosoft Excel97-2003です。
フォーム"F_全データ"にボタンを付けて、クリックするとファイル名を自分で付けて保存する。というVBAを作成したいです。

1つ目のVBAは

DoCmd.OutputTo acForm, "F6_全データ", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0

これだと、ファイルの種類が、Microsoft Excel5-7になってしまい困ります。
この形式になってしまうと、Excelデータを開くと、文字数が多いところが保存されていません。これだと困ります。

2つ目が

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "F_全データ", "○○○.xls"

こちらですと、ファイルの種類は97-2003になりまして、問題はないのですが、ファイル名は自分で指定したいのです。

ご指導よろしくお願いします。

いつもお世話になっております。

AccessのクエリからデータをExcelにエクスポートします。
形式はMicrosoft Excel97-2003です。
フォーム"F_全データ"にボタンを付けて、クリックするとファイル名を自分で付けて保存する。というVBAを作成したいです。

1つ目のVBAは

DoCmd.OutputTo acForm, "F6_全データ", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0

これだと、ファイルの種類が、Microsoft Excel5-7になってしまい困ります。
この形式になってしまうと、Excelデータを開くと、文字数が多い...続きを読む

Aベストアンサー

単純な方法だと

mFileName = InputBox("ファイル名を入力してください")

にして

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "F_全データ",mFileName

にしておけば良いと思います。
後は「ファイルの保存ダイアログ」を開いてファイル名を取得するという方法も
取れますね。

Access VBA:
ファイルを開く、名前を付けて保存ダイアログボックスを表示するサンプル
http://billyboy.blog81.fc2.com/blog-entry-53.html

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

QAccessからExcelにエクスポートする時に常に上書きしたい

AccessのテーブルをExcelへ出力する際に、常に同じファイル名で保存する場合、
2回目以降は、上書きするかどうかを尋ねるメッセージが表示されます。
「常に上書きする」と決まっているので、メッセージを表示させたくないのですが、どうしたらいいのでしょうか。

現在、マクロで作成しており、出力の前後に「メッセージの設定」を入れてみたのですが、ダメでした。
VBAなら可能でしょうか?よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

エクスポートする直前に、元のファイルを削除するか、移動するか、リネームするのはどうですか。(VBAですが)


削除
Kill "C:\エクスポート.xls"

移動
Name "C:\エクスポート.xls" As "C:\移動後\エクスポート.xls"

リネーム
Name "C:\エクスポート.xls" As "C:\エクスポート_1.xls"

QAccessのテーブルを既存のExcelファイルへエクスポートしたいんですが

Win2000,Access2000,Excel2000を使用しています。
アクセスのテーブルを既存のエクセルファイルへエクスポートするマクロを組みましたが実行すると、
 「外部テーブルのフォーマットが正しくありません。」
というメッセージが出ます。
ヘルプを見ると、
 「テーブルの形式がリンク後に変更されています。
  テーブルをリンクし直してから、もう一度実行してください。」
という表示が出ますが、なんのことやらちんぷんかんぷんです。
そもそもテーブルのリンクとはどういう意味でしょうか?
別のエクセルファイルへエクスポートしてみましたが、それは問題なくできたので、エクスポートさせようとしているエクセルファイルの方に問題があるのでしょうか?
どなたかお教えください。

Aベストアンサー

Microsoft Excel 8-9だったら、ファイルごと書き換えてしまうはずだなぁ。
おかしいなぁ。
ファイルに書き込み保護がかかっているとか、ファイルが壊れているとか、そういう原因も考えられますが、通常は、エクスポートのときにその旨のメッセージが出ます。
リンクがかかってそこでエラーが起きているのだから、Accessのモジュールが壊れているのかもしれません。
申し訳ありませんが、私にはわかりません。

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ファイル形式またはファイル拡張子が正しくありません

こんにちは。
Access(accdb)から拡張子xlsxのExcelファイルを出力しました。出力したファイルを開くと、ファイル形式またはファイル拡張子が正しくありません、というエラーが発生します。出力拡張子をxlsにaccess上で変更すると、ファイルを開けるのですが、xlsxだと開けません。

できればxlsxの状態で出力し開けるようにしたいのですが、何かよいアイデアはないでしょうか。

ちなみにaccessでは、以下の通りエクスポートのマクロを組んでいます。

変換の種類 エクスポート
ワークシートの種類 Excel binary workbook
テーブル名 ◯◯
ファイル名 ▲▲.xlsx
フィールド名の設定 いいえ

Aベストアンサー

AccessとExcelのバージョンが書いてありませんが、Access2007以降とExcel2003以前のバージョンの組み合わせだとたぶんそうなります。
Office2003以前のMicrosottOfficeは「*.xlsx」や「*.docx」等のファイル形式に対応していません。これらはOffice2007以降で対応したファイル形式です。
最新バージョンのMicrosottOfficeに買い換えるか、「LibreOffice」や「OpenOffice.org」等のxlsx形式を扱えるフリーソフトのオフィススイートに乗り換えるかすることをおすすめします。
なお、Office2003の場合は「Word/Excel/PowerPoint用MicrosoftOffice互換機能パック」を使用できますが、Office2003自体がサポート終了しており、セキュリティ上の問題があるので使用はおすすめしません。
https://www.microsoft.com/ja-jp/download/details.aspx?id=3

QAccess2010クエリーのExcel出力書式

Access2010で作成したクエリーをそのままの書式でEXCELに出力するVBAを組みたいと思っています。VBAは下記のとおり書いてみましたが、クエリーで表示される書式(ある列はカンマ、ある列は日付形式など)をそのまま移すことができません。このVBAをどのように変更したら、クエリーそのままの書式で出力できますでしょうか?

'''''QUERYを指定
Dim varQE1 As Variant
varQE1 = "QE1_List" 'QUERY名

'''''日付つきファイル名を指定
Dim varExcelPass As Variant
varExcelPass = "C:\List_" & Format(Now(), "yyyymmdd") & ".xls"

'''''ファイル変換出力
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

Aベストアンサー

'''''ファイル変換出力
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

docmd.OutputTo acOutputQuery ,varQE1,acformatXls,varExcelPass
では。

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

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

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

Aベストアンサー

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

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


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

人気Q&Aランキング