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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
COBOL、項目末尾に空白がある場...
-
コマンドプロンプトのテキスト...
-
Apacheのエラーログのログレベ...
-
VB6.0でExcel,PDF,Word出力方法
-
Thunderbird 受信メールからの...
-
アクセス→エクセルへエクスポー...
-
kシェルのリダイレクトについて
-
エクセルが裏で動いたままなん...
-
EXCEL VBAでのCSVファイル読み...
-
WshShellから起動したbat(ftp)...
-
Acrobat参照設定
-
【Excel VBA】取り込んだファイ...
-
VB(VBA)で、バイナリデータを使...
-
C++.NET 2003 「空のドキュメ...
-
ATTファイルってどうやって開け...
-
エクセルVBAでメールの自動作成...
-
テキストファイルの一部分を抽...
-
HTMLテキストリンクでExcelファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
COBOL、項目末尾に空白がある場...
-
コマンドプロンプトのテキスト...
-
Thunderbird 受信メールからの...
-
AccessのレポートからPDFをペー...
-
accessのリポートを、excelに出...
-
COBOL FILLER
-
WshShellから起動したbat(ftp)...
-
Acrobat参照設定
-
ファイナルカットで編集した動...
-
クエリをエクセルファイルへの出力
-
excel vbaでのxml出力がわかり...
-
ショートカットで起動した場合...
-
VBA 参照先で選んだファイルを...
-
iTextでPDFを表示させたら日本...
-
Excel で「OLE は現在使用でき...
-
“ファイルに出力”した印刷ファ...
-
EXCEL VBAでのCSVファイル読み...
-
TransferSpreadsheetでフルパス...
おすすめ情報