アプリ版:「スタンプのみでお礼する」機能のリリースについて

Private Sub コマンド1_Ckick()

If リスト = "1"Then
DoCmd. TransferSpreadsheet acExport_
, , "クエリ1","MicrosoftExcel(*.xlxs)"
ElseIf リスト = "2"Then
DoCmd. TransferSpreadsheet acExport_
, , "クエリ2","MicrosoftExcel(*.xlxs)"
End If
End Sub

------------
リスト(1 Or 2)を選択後、コマンド1をクリックすると、
リストの選択に合わせてクエリをエクセル出力したいです。

行数が10万行と多い為、
行数制限があるマクロビルダーの「書式を保持してエクスポート」を使わず
XLXS形式で出力したいです。

しかし、上のVBAを実行したところ、
「データベースまたはオブジェクトは読み取り専用なので更新できません」
というエラーが出てしまいます。


どこを訂正すればよいのかわからず困っています。
どうかご教授の程、よろしくお願いいたします。

A 回答 (2件)

色々とおかしいです。


TransferSpreadSheet メソッドのヘルプを読んでみてください。
DoCmd.TransferSpreadsheet acExport _
, spreadsheettype:=acSpreadsheetTypeExcel12Xml _
, tablename:="クエリ2" _
, FileName:="c:\hoya\hoya.xlsx" _
, hasfieldnames:=True
のような感じになります。
(パラメータの名前部分 例:spreadsheettyep:= などは分かりやすくするために付けたので
無くても構いません)
あと、投稿の際に質問欄にべた書きしたためかもしれませんが、
行継続文字 _ の前には半角スペースが必要です。
エクセルの拡張子もxlsxです。
※実行する前に、メニュー→デバッグ→○×のコンパイルを行ってエラーが出ないことを
確認してください。
※変数『リスト』はテキスト型ですよね?
    • good
    • 0
この回答へのお礼

具体的に教えていただき、本当にお手数をお掛け致しました。

>※実行する前に、メニュー→デバッグ→○×のコンパイルを行ってエラーが出ないことを
確認してください。
提示していただいた例を参考に修正し、動作することを確認しました。
○×コンパイルを使ったことがなかったので、
こんな便利なものを教えていただき、感謝しております。

>※変数『リスト』はテキスト型ですよね?
テキスト型です。
教えていただいた例で問題ありませんでした。

回答者No.1さんも、そもそもちゃんと指定できていない点を指摘いただきましたが、
より詳しく書いていただいたNo.2さんをベストアンサーとします。

至らない事ばかりなのにも関わらず、この度は丁寧に教えていただきましてありがとうございました。

お礼日時:2013/07/19 20:20

> , , "クエリ1","MicrosoftExcel(*.xlxs)"


クエリの次は何を意図しているのですか?
Exportするファイル名を書くはずなんですが。

出力するファイルを指定すべきところに、ワイルドカードを書いちゃダメです。
さらに(*.xlxs)は(*.xlsx)の間違いでしょうね。

"C:\20130718\Export1.xlsx"のように書いてください。
elseのクエリ2についても。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。

そもそも誤りが多すぎました・・・。
色々な点をご指摘いただき、感謝しております。

修正し、エラーが出ないことを確認しました。
この度はありがとうございました。

お礼日時:2013/07/19 20:15

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