Microsoft Access 掲示板

Accessのテーブルを任意のフォルダにエクセルで出力したい

9 コメント
views
4 フォロー

初心者です教えてください
accessのAテーブルを任意のフォルダにエクセルで出力したいのですが
外部データのエクセル出力ですると 外部フォーマットが違うとでてしまいます
データが65000行以上あるので VBAでやるしかないのですが どうしたらいいか
わかりません
よろしくお願いします

もちっこ
作成: 2022/06/08 (水) 12:31:32
通報 ...
1

設定ダイアログで、ファイル形式で、拡張子が .xls のものを選択してませんか。
Excel Workbook(
.xlsx) に変更して試してみてください。

2
もちっこ 2022/06/09 (木) 09:57:58 b2348@20787 >> 1

Excel出力のVBAを以下のように書きました

Private Sub Excel出力_Click()

'変数宣言

Dim strPath As String

'Excelエクスポート先のファイルパス
strPath = "C:\Users\" & UserName & "○○○リスト" & Format(Now(), "yyyymmdd")

'Excelファイルの出力
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "○○○リスト出力", strPath, False

'Excelファイルをエクスポートした旨を通知する。
MsgBox "○○○リストを出力しました。" & vbCrLf & "C:\Users\" & UserName & "\OUT\", vbInformation

End Sub

を実行すると
実行時エラー’3051’
ファイル’C¥Users¥○○○リスト2022****’を開くか、書き込むことができませんでした。ほかのユーザーが排他的に開いているか、データーの表示と書き込みを行う権限がありません。

とメッセージがでてしまいます
どうしtら解消できるでしょうか

よろしくお願いします

3
strPath = "C:\Users\" & UserName & "○○○リスト" & Format(Now(), "yyyymmdd")

の部分ですが、ファイルパスに拡張子をつけてみてください。

strPath = "C:\Users\" & UserName & "○○○リスト" & Format(Now(), "yyyymmdd") & ".xlsx"
4

上記でダメなら下記も試してみてください。

strPath = "C:\Users\" & UserName & "\○○○リスト" & Format(Now(), "yyyymmdd") & ".xlsx"
5
もちっこ 2022/06/09 (木) 11:49:12 b2348@20787 >> 3

strPath = "C:\Users\" & UserName & "○○○リスト" & Format(Now(), "yyyymmdd") & ".xlsx"
としましたが
今度は実行時エラー’2220’
ファイルC:\Users\" & UserName & "○○○リスト2022****.xlsx"を開くことができませんと表示されます

6
りんご 2022/06/09 (木) 13:05:18 c564b@0e907

横からすみません。>> 4の "\○○○リスト"でも駄目でしたか?
しっかり把握していませんが、取り敢えず、下記をやっておくと解決に近づくかもしれません。
①変数UserNameとFormat関数の部分を手打ちに置き換える。結果、問題なく開ける?
②変更UserNameとFormat関数の中身をMsgboxやDebug.Printで表示。結果、①の手打ちと同じ?

7
もちっこ 2022/06/09 (木) 13:44:46 b2348@20787

①と②を試したところUserNameが取得できていませんでした
表示させるとC:\Users\○○○リスト2022****.xlsx となってしまいます
どうすれば UserNameをうまく取得できるのでしょうか

8
hatena 2022/06/09 (木) 14:09:44 修正

質問では「任意のフォルダにエクセルで出力したい」とのことですが、この「任意のフォルダー」とは何でしょうか。
具体的に説明してください。

ログインユーザー名は
Environ("USERNAME")
で取得できますが、それは任意のフォルダーとは言わないと思います。

9
もちっこ 2022/06/09 (木) 14:30:31 b2348@20787

Dim WshObj As Object
Dim UN As String
Set WshObj = CreateObject("WScript.Network")
UN = WshObj.UserName

をいれて UsernameをUNにしたら できました
回答をしてくれた方ありがとうございました