
ACCESS2003で作成したデータをダイアログで指定したファイル名でエクスポートしたいのですが、上手くできません。
ダイアログが開きその指定したフォルダーにあるエクセルファイルを選択すれば、正常にエキスポートできるのですが、
開いたダイアログにファイル名を入力すると、それ以降動かなくなります。
基本的なことが間違っているのでしょうか??
詳しい方教えてください。下記にコードした内容を書きました。
よろしくお願いします。
Private Sub cmbTransExcel_Click()
On Error GoTo Err_cmbTransExcel_Click
Dim fileSaveName As Variant
Set dlg = Application.FileDialog(msoFileDialogOpen)
With dlg
.Title = "チェック"
.ButtonName = "エキスポート"
.InitialFileName = "C:\Program Files\DATA\"
.InitialView = msoFileDialogViewList
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "xls", "*.xls"
End With
With dlg
If .Show = -1 Then
For Each vntPath In dlg.SelectedItems
strPath = vntPath
Next
Else
Set dlg = Nothing
Exit Sub
End If
End With
Set dlg = Nothing
Dim strac As String
Dim varxls As Variant
Dim strmsg As String
strac = "Q_チェック" 'Accessファイルを指定します。
varxls = strPath 'エクセルファイルを指定します。
strmsg = strac & " を、Excelファイルへ出力します。" & Chr(13) & _
"出力先は" & varxls & "、 シート名は" & strac & "です。" & _
Chr(13) & "よろしければ、OKをクリックして下さい。"
If MsgBox(strmsg, vbOKCancel) = vbOK Then
'最初のデータをフィールド名として使います。
DoCmd.TransferSpreadsheet acExport, _
acSpreadsheetTypeExcel9, strac, varxls, True
MsgBox "EXCELの出力が正常終了しました。", vbInformation, "処理終了"
End If
Exit_cmbTransExcel_click:
Exit Sub
Err_cmbTransExcel_Click:
MsgBox "EXCELの出力が異常終了しました。", vbCritical, "エラー!"
Resume Exit_cmbTransExcel_click
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> Set dlg = Application.FileDialog(msoFileDialogOpen)
「ファイルを開く」 ですから
存在しないファイルは開けませんので、
無いものを指定することはできませんね。
回避策として
(1) msoFileDialogSaveAs を使用する。
この場合、フィルタが指定できませんので
拡張子の制御はご自身でやることになります。
(2) FileDialog 以外の方法にする。
お勧めはこちら。
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
中ほどにある wh_GetFileName 関数 を「クリップボードにコピー」を
クリックしてコピー、
標準モジュールに貼り付け。
クリックイベントで wh_GetFileName 関数を呼び出すように変更。
Sub cmbTransExcelClick()
On Error GoTo Err_cmbTransExcel_Click
Const DLG_TITLE = "チェック"
Const OPEN_TITLE = "エキスポート"
Const INITIAL_DIR = "C:\Program Files\DATA"
Const FILTER_ = "xls (*.xls)|*.xls"
Const FILTER_INDEX = 0 ' 0 行目を既定で選択する。
Dim strPath As String
Dim strac As String
Dim varxls As Variant
Dim strmsg As String
' 保存先ファイル名を取得します。
strPath = wh_GetFileName(, , _
DLG_TITLE, OPEN_TITLE, , INITIAL_DIR, FILTER_, _
FILTER_INDEX, , gfnFlagsOverWritePrompt, _
gfnFOpenSaveAs)
If strPath = "" Then
Exit Sub
End If
strac = "TableList" 'Accessファイルを指定します。
varxls = strPath 'エクセルファイルを指定します。
strmsg = strac & " を、Excelファイルへ出力します。" & Chr(13) & _
"出力先は" & varxls & "、 シート名は" & strac & "です。" & _
Chr(13) & "よろしければ、OKをクリックして下さい。"
If MsgBox(strmsg, vbOKCancel) = vbOK Then
'最初のデータをフィールド名として使います。
DoCmd.TransferSpreadsheet acExport, _
acSpreadsheetTypeExcel9, strac, varxls, True
MsgBox "EXCELの出力が正常終了しました。", vbInformation, "処理終了"
End If
Exit_cmbTransExcel_click:
Exit Sub
Err_cmbTransExcel_Click:
MsgBox "EXCELの出力が異常終了しました。", vbCritical, "エラー!"
Resume Exit_cmbTransExcel_click
End Sub
早々のご回等ありがとうございます。
ご指摘の通りコードしたら、やりたいと思っていたことができました。
でも、正直内容のほうはよくわかりません。
ご紹介して頂いたサイト等を参考に勉強していきたいと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの時刻の形式について
-
accessでクエリをExcelにエクス...
-
Thunderbird 受信メールからの...
-
コマンドプロンプトのテキスト...
-
EXCEL VBAでのCSVファイル読み...
-
ATTファイルってどうやって開け...
-
C++によるファイル送受信プログ...
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
ファイル変換
-
エディットボックスの内容をテ...
-
WORDのVBAで差し込み印刷時、デ...
-
openglで音楽を再生する
-
C++.NET 2003 「空のドキュメ...
-
テキストファイルの一部分を抽...
-
[C#]FTPでの複数のファイル...
-
ファイルのダウンロードが遅い
-
RPGでメッセージファイル利用
-
jamファイルだけが転送できませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
COBOL、項目末尾に空白がある場...
-
Thunderbird 受信メールからの...
-
accessのリポートを、excelに出...
-
COBOL FILLER
-
RPGについて
-
AccessのレポートからPDFをペー...
-
ACCESS2002(or2003)の日付表示...
-
VB.NET操作で Excelにビットマ...
-
Excel で「OLE は現在使用でき...
-
ショートカットで起動した場合...
-
エクセルが裏で動いたままなん...
-
Acrobat参照設定
-
CSV形式で保存するとファイ...
-
iTextでPDFを表示させたら日本...
-
Delphiでdebug構成とrelease構...
-
ファイナルカットで編集した動...
-
EXCEL VBAでのCSVファイル読み...
おすすめ情報