アクセスからエクセルへクエリの結果をインポートしています。
そこでワークシートができるのですが、その後、そのワークシート
が残るので同じ処理をした際に、同じ名前のワークシートに上書き
すると思っていたのですが、新たにワークシートを作成して
しまい困っています。
VarAccess = "入力禁止LEJOUR"
の部分がワークシート名になりますが
同じ処理をすると入力禁止LEJOUR1というワークシートが横に
できてしまいます。
これを入力禁止LEJOURのシートに上書きさせるには
どんなコードを使用したらいいでしょうか?
教えてください。
よろしくお願い致します。
Private Sub コマンド15_Click()
On Error GoTo エラー
Dim VarAccess As Variant
Dim VarExcelpass As Variant
Dim strmsg As String
VarAccess = "入力禁止LEJOUR"
VarExcelpass = "\\Shiob030\共有\生産戦略事業部\03.生産L.C.海\B.指図進捗表(月単位)\07\SS\07SS-LE JOUR.xls"
strmsg = VarAccess & "を、Excelファイルへ出力します。" & _
Chr(13) & "出力先は" & VarExcelpass & "、 シート名は" _
& VarAccess & "です。" & Chr(13) & "よろしければ、OKをクリックして下さい。"
If MsgBox(strmsg, vbOKCancel) = vbOK Then
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, VarAccess, VarExcelpass, True
MsgBox "データ出力は、正常に完了しました。"
End If
Exit Sub
エラー:
If Err.Number = 3044 Then
MsgBox "Excelファイルのパス指定が間違っています。", vbCritical
Else
MsgBox "予期せぬエラーが発生しました。", vbCritical
End If
End Sub
No.2ベストアンサー
- 回答日時:
こちら(WinXp Pro SP2+10月までのパッチ、Office2002 SP3Sp2+10月までのパッチ)
で試したところ、シートの追加にはなりませんでした。なんでかな????
ただ、
A B C D
1 x x
2 x
3 X
の「シート」に「上書き」される時、「上書き」するシートの方の範囲が狭いと
A B C D
1 z z
2 z
3 X
のように前の内容が残りました。
とレスしようと思ったのですが、途中から何故かシートが追加されるようになりました。
色々調べてゆくうちに、また追加されなくなってしまいました。 (^_^;)
ただ、追加しても、前のデータが残る場合も有ったので
結局、シートがあれば削除で対処しては如何でしょう?
もしかしたら、Book の使い回しをしている内に無駄な領域が増えて肥大化するかも?
Sub test2()
Dim objXl As Object
Dim objBk As Object
Dim objSt As Object
Set objXl = CreateObject("excel.application")
Set objBk = objXl.Workbooks.Open("d:\_z.xls")
For Each objSt In objBk.Worksheets
If objSt.Name = "入力禁止LEJOUR" Then
objXl.DisplayAlerts = False
objSt.Delete
objXl.DisplayAlerts = True
End If
Next objSt
objBk.Save
objXl.Quit
Set objBk = Nothing: Set objXl = Nothing
Docmd.TransferSpreadsheet ・・・
End Sub
あるいは、Dir関数でファイルの存在を確認し有ったら、Kill するとか?
なお、タスクマネージャにExcel が残ってしまう場合は下記をご覧下さい。
http://www.bcap.co.jp/hanafusa/VBHLP/ExcelErr.htm
No.1
- 回答日時:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel4, VarAccess, VarExcelpass, True
と保存するファイルの種類を、Excel9(Excel2000ワークブック)からExcel4(Excel4.0ワークシート)にすればいいのでは?
Excel4.0は1ブック1シートの構成なので上書きしかできません。
この回答への補足
ありがとうございます。
しかし、1ブック、2シートにしたいのです。
この場合はどうすればいいのでしょう?
Excel9以下にそのような設定のファイルは
ありますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
エクセルの2つのシートを並び...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
ActiveSheet.Protect UserInter...
-
Excelで条件に一致したものだけ...
-
エクセルで、シートの名前を変...
-
エクセルのシー名を二段表示に...
-
【Excel VBA】データ貼り付け先...
-
EXCELで存在しないシート...
-
Wordで差し込み印刷時に表示す...
-
特定の複数のシートに同じ処理...
-
エクセルでリンク貼り付けした...
-
Excelのオートフィルター等のリ...
-
DATE関数 4月31日などのあ...
-
パワーポイントでスライドマス...
-
エクセルのシート連番の振り直し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセル、特定のシートにパス...
-
エクセルのシー名を二段表示に...
-
Accessのテーブルを既存のExcel...
-
確定申告用の医療費集計フォー...
-
エクセルのシート連番の振り直し
-
【Excel】エクセルの1ファイル...
-
エクセルの複数シートでのリン...
-
【Excel VBA】データ貼り付け先...
-
エクセルでリンク貼り付けした...
おすすめ情報