DoCmd.OutputTo acForm, "データシート", acFormatXLS

とした時に、ファイルの種類が
「Microsoft Excel 5-7(*.xls)」
になってしまいます。

私が使っているヴァージョンは2003なので
「Microsoft Excel 97-2003(*.xls)」
にしたいのですが
どうすればいいでしょうか?
ご教授よろしくお願いします。

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

A 回答 (2件)

http://www.kotaete-net.net/Default.aspx?pgid=14& …
の後半辺りを読んでみてください。
ーー
私の場合
Sub test05()
DoCmd.OutputTo acForm, "社員3", acFormatXLS, "C:\Documents and Settings\xxxx\My Documents\社員7.xls", True
End Sub
を実行すると、現在のエクセルのバージョンのファイルが出来たようですが。
私の場合、社員3と言うフォームがあります。
>ファイルの種類が「Microsoft Excel 5-7(*.xls)」になってしまいます。
事後に、どういう風に確認しましたか。
OutputTo にもDocmd.TransferSpreadsheet のacSpreadsheetTypeExcel8  に当たる物は無いですかね。これを省くとDefaltでExcel 5-7になるとか。詳しく調べていませんので
よろしく。
    • good
    • 0
この回答へのお礼

全部読みました。仕様なら諦めます
ありがとうございました。

お礼日時:2009/05/23 23:13

回答にならないかもしれませんが、


「OutputTo」メソッドではなく
マクロの「出力」アクションで
形式を「Microsoft Excel 97-2003 (*.xls)」にしたらいかがでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/05/23 23:11

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

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

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

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

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側から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への条件付エクスポート

お世話になります。
Access2000で住所録を作成し、運用しております。
普段はデータをフリガナ、会社名、市町村で検索し、表示しているのですが
この時に使用した、検索条件をそのまま使って、得られたデータをExcelに
エクスポートしたいのです。
(検索は、サブフォームの一覧表示部に各検索条件でフィルタをかけるという方法で行っています。)
テーブル作成クエリなどいろいろ試してみたのですが、なかなかうまくいきません。
良い方法をご存知の方いらっしゃいましたら、よろしくお願いします。

Aベストアンサー

テーブル作成クエリで抽出したものをテーブルに出来たらあとはコードで出来ます。
ただし、
1.エクスポート先のEXCELファイルは既にある前提です。ここでは仮にC:\Windows\デスクトップ\Expo.xlsというファイルのDataという名前のシートににエクスポートするとします。

2.VBAでDAOを使用しますが、2000の場合標準がADOになっていますので、ビジュアルベーシックエディターのツールメニューの参照設定からDAOの一番新しそうなヴァージョンのやつにチェックマークをつけておいてください。(ADOでやればいいのでしょうが私の知識が古いのでDAOしか使えないのです。)

3.抽出して作成したテーブルの名前はT_抽出Dataと仮にしておきます。
4.どれかのフォームにコマンドボタンを作成して、そのクリック時のイベントプロシージャに次のようなコードを書きます。

Private Sub ボタン_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim appExcel As Object
Dim Worksheets As Object
Dim I As Integer '行番号

Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset("T_抽出Data")

'エクセルオブジェクト生成
Set appExcel = GetObject("C:\Windows\デスクトップ\Expo.xls")
Set Worksheets = appExcel.Worksheets("Data")

'作業中はエクセルシートを非表示
appExcel.Parent.Windows(appExcel.Name).Visible = False

With Worksheets

'データ追加ループ
Do Until rs.EOF = True
.Cells(I, 1) = rs.Fields("フィールド名")
.Cells(I, 2) = rs.Fields("フィールド名")
.Cells(I, 3) = rs.Fields("フィールド名")
.Cells(I, 4) = rs.Fields("フィールド名")
rs.MoveNext
I = I + 1
Loop

End With

appExcel.Parent.Windows(appExcel.Name).Visible = True

'エクセルブックを閉じる
appExcel.Close True

' オブジェクトの参照を解放
Set Worksheets = Nothing
Set appExcel = Nothing

MsgBox ("エクセルへの出力が終了しました")
End Sub

実は私も以前、教えてgooで同じような質問をして、別の人にこのコーディングを教えてもらいました。

テーブル作成クエリで抽出したものをテーブルに出来たらあとはコードで出来ます。
ただし、
1.エクスポート先のEXCELファイルは既にある前提です。ここでは仮にC:\Windows\デスクトップ\Expo.xlsというファイルのDataという名前のシートににエクスポートするとします。

2.VBAでDAOを使用しますが、2000の場合標準がADOになっていますので、ビジュアルベーシックエディターのツールメニューの参照設定からDAOの一番新しそうなヴァージョンのやつにチェックマークをつけておいてください。(ADOでやればい...続きを読む

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccessからExcelに罫線付で出力したい

Access2010使用。

AccessのクエリからExcelにエクスポートした際、罫線などの体裁を整えて出力したいと思っています。

データは下記のコードでなんとか出るようになりましたが、このコードの中に罫線を引くコードを
入れる方法がどうしてもわかりません。

検索してあれこれ試しましたが「オブジェクトがない」や「サポートしてない」などエラーメッセージ
が出てしまい、VBAの基礎知識がない私にはどうしてもわかりませんでした。
どうかアドバイスお願いいたします。
(クエリ名は Q_ABC とします)

やりたいことは

・データがある行列に格子線を引き、1行目の項目列の下は二重線、外側は太線にしたい。
・行の高さを数値で指定したい。

です。なお、行数はその都度増えます。

また、できれば
印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい
のですが可能でしょうか?

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

Private Sub コマンド0_Click()
Set xlapp = CreateObject("Excel.application")

Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim rs As New ADODB.Recordset
Dim objEXCEL As Object
Dim nYLINE As Integer
Dim nXLINE As Integer
Dim nRCNT As Integer
Dim strWORK As String

Set xlApp = CreateObject("Excel.Application")

Set objEXCEL = CreateObject("Excel.Application")

objEXCEL.Visible = True

objEXCEL.Workbooks.Add

objEXCEL.sheets.Add

re.Open "Q_ABC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'見出しを書き込む
objEXCEL.Range("A1") = "ID"
objEXCEL.Range("B1") = "氏名"
objEXCEL.Range("C1") = "住所"

 == 以下T列まで省略 ==

'項目名をセルの中央に
objEXCEL.Range("A1:T1").HoraizontalAlignment = xlHAilignCenterAcrossSelection

Dim yLINE As Integer '行カウンター

yLINE = 2  'ループ処理

While rs.EOF = False

'accessからデータのセット

objEXCEL.Cells(yLINE, "A") = rs.Fields("ID")
objEXCEL.Cells(yLINE, "B") = rs.Fields("氏名")
objEXCEL.Cells(yLINE, "C") = rs.Fields("住所")

== 以下T列まで省略 ==

rs.MoveNext
yLINE = yLINE + 1
Wend

'シートの列幅の自動調整
objEXCEL.Cells.EntireColumn.AutoFit

rs.Close
Set rs = Nothing

End Sub

Access2010使用。

AccessのクエリからExcelにエクスポートした際、罫線などの体裁を整えて出力したいと思っています。

データは下記のコードでなんとか出るようになりましたが、このコードの中に罫線を引くコードを
入れる方法がどうしてもわかりません。

検索してあれこれ試しましたが「オブジェクトがない」や「サポートしてない」などエラーメッセージ
が出てしまい、VBAの基礎知識がない私にはどうしてもわかりませんでした。
どうかアドバイスお願いいたします。
(クエリ名は Q_ABC とします)

や...続きを読む

Aベストアンサー

>> 印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい
のですが可能でしょうか?

を忘れていました。

Excel の印刷がらみの設定は PageSetup を変更して行います。

  ' ズーム設定(自動で行うので設定はしない)
  objEXCEL.sheets(1).PageSetup.Zoom = False
  ' ページの高さに合わせる
  objEXCEL.sheets(1).PageSetup.FitToPagesTall = False
  ' ページの幅に合わせる(下記は横のページを1ページで納める設定です)
  objEXCEL.sheets(1).PageSetup.FitToPagesWide = 1
  ' 用紙サイズの設定(A3 サイズ)
  ' その他の定数については、http://msdn.microsoft.com/ja-jp/library/office/ff834612.aspx を参照
  objEXCEL.sheets(1).PageSetup.PaperSize = xlPaperA3
  ' 印刷方向(横向き設定、縦の場合は xlPortrait)
  objEXCEL.sheets(1).PageSetup.Orientation = xlLandscape

>> 印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい
のですが可能でしょうか?

を忘れていました。

Excel の印刷がらみの設定は PageSetup を変更して行います。

  ' ズーム設定(自動で行うので設定はしない)
  objEXCEL.sheets(1).PageSetup.Zoom = False
  ' ページの高さに合わせる
  objEXCEL.sheets(1).PageSetup.FitToPagesTall = False
  ' ページの幅に合わせる(下記は横のページを1ページで納める設定です)
  objEXCEL.sheets(1).PageSet...続きを読む

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-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【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

QAccess:データシート形式表示のフォームをそのままExcelへ

Access2003 WinXPです。
フォームにサブフォームを置き、クエリで抽出したデータを
データシート形式で表示しているフォームをサブフォームへ表示させています。
この、サブフォーム、またはデータシート形式のフォームをまるっと新規Excelへエクスポートしたいのですが、うまくいきません。
クエリをエクスポートは出来ますが、ユーザーがサブフォームに表示されたデータのフィールドを入れ替えて、その見た目のまま出力したいという希望があるので。。。
分かる方いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

#5です

mdb 見させていただきました。

> Fsub.Setfocus の後のレコード選択でエラーです。
> コマンドまたはアクション‘すべてのレコードの選択’は無効です。

これは確認できませんでした(変更なし状態にて)
(以下のタイミングが関係しているのかも?)

> それ以前にレコードの選択が出来なくて困っています;

条件指定したものがサブフォームに表示されないということでしょうか。
であれば、再現できませんでした(変更なし状態にて)

また、更新/削除/追加ができないということであれば、
サブフォームをデザインビューで開き、プロパティ・更新/削除/追加の許可を変更してみてください。


Excel出力時、私の環境では、セル1つにのみ「ID」値が表示されただけでした。
(2003 + XP Pro)
これは、タイミング的なものと思われます。

    Dim oApp As Object
    Set oApp = CreateObject("Excel.Application")
    oApp.Workbooks.Add
    oApp.Visible = True ' ★

上記★部分をコメントにしてください。

Excelの表示化(True)とコピー(ペースト)処理が重なった様な雰囲気です。
(詳細はわかりません)

    oApp.Columns.EntireColumn.AutoFit
    oApp.Visible = True

処理が終わったところで表示すればよいことなので、最後のところだけを有効(そのまま)とします。

私が変更したのは、★のところだけです。

確認してみてください。
また補足してください。

#5です

mdb 見させていただきました。

> Fsub.Setfocus の後のレコード選択でエラーです。
> コマンドまたはアクション‘すべてのレコードの選択’は無効です。

これは確認できませんでした(変更なし状態にて)
(以下のタイミングが関係しているのかも?)

> それ以前にレコードの選択が出来なくて困っています;

条件指定したものがサブフォームに表示されないということでしょうか。
であれば、再現できませんでした(変更なし状態にて)

また、更新/削除/追加ができないということであ...続きを読む


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

人気Q&Aランキング

おすすめ情報