質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

5174閲覧

同階層に別名で保存というVBAを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/08/30 02:33

編集2019/08/30 02:35

同階層に保存したいです。下記まで作成しました。

Dim ws As Worksheet Sheets("sheet1").Name = "test" ThisWorkbook = ThisWorkbook.Path Workbooks.Add ThisWorkbook.Sheets("test").Copy After:=ActiveWorkbook.Sheets(Sheets.Count) Application.DisplayAlerts = False For Each ws In Sheets If ws.Name <> "test" Then ws.Delete Next ws Application.DisplayAlerts = True ActiveWorkbook.SaveAs Filename:=ThisWorkbook & "Test.csv" ActiveWorkbook.Close End Sub

<やりたいこと>
今は、実験中というフォルダー内に【text.xlsm】というエクセルがあり、
そこにたくさんシートがあります。
その中で【sheet1】だけを【test】というシート名に変更して、
【Test.csv】として、【実験中】という同階層のフォルダーに格納をしたいです。

<現在の状況>
しかし、この記述では、
【実験中】というフォルダーの一つ上の階層に
【実験中Test.csv】という名前で保存されてしまいます。

おそらくこの二行のせいだと思うのですが・・・。

3行目:ThisWorkbook = ThisWorkbook.Path 12行目:ThisWorkbook & "Test.csv"

<エラーの原因?>
おそらく今は【ActiveWorkbook】の同階層に保存しようとしており、
【ActiveWorkbook】は、新規で作成しようとしているエクセルを指している(Test.csv)ので、
一つ上の階層に保存されてしまうのではないか・・・と予想しています。

そのため、
【ActiveWorkbook】ではない方のエクセル・・・もしくは【text.xlsm】という名前のエクセルと同階層に保存をする・・・という記述にしたいですが、そのやり方が分かりません。

もし分かりましたらご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

フォルダ名とファイル名がくっついてしまっているので、ファイル名の前に¥¥を入れれば対象フォルダに出力されると思います。

VBA

1ThisWorkbook & "¥¥Test.csv"

投稿2019/08/30 04:05

shirokuma4690

総合スコア154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ExcelVBA

1Sub test() 2 Dim wb As Workbook 3 Dim sPath As String 4 5 Application.ScreenUpdating = False 6 sPath = "C:\Users\ht\Desktop\Book1.xlsm" 7 Set wb = Workbooks.Open(sPath) 8 wb.Worksheets("Sheet3").Activate 9 Application.DisplayAlerts = False 10 wb.SaveAs Replace(sPath, wb.Name, "test.csv"), xlCSV 11 Application.DisplayAlerts = True 12 wb.Close False 13End Sub

こんな感じで、
開いて、名前置き換えて、CSVで保存、保存せずに閉じる
で、いいんですよね?

保存するときに該当シートをアクティブにしておけば、
いちいち不要なシートを削除しなくても、
テキストファイル(CSV等)には「シート」という概念が無いので、
そういう情報は保存したときに抜け落ちます。
手動の操作で確認願います。

投稿2019/08/30 03:19

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問