教えて!gooにおける不適切な投稿への対応について

Excelにあるデータをテキストファイルにコピーし保存するマクロを作成しました。

Public Sub テキストファイルへ貼り付け()

Dim a As String
Dim maxrow As Integer

'プログラムを新しいブックへコピーする
maxrow = Cells(Rows.Count, 10).End(xlUp).Row
ThisWorkbook.Worksheets(1).Range("J2:J" & maxrow).Copy

Sheets.Add
ActiveWorkbook.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues


'保存するブックの名前を作成
a = ThisWorkbook.Path & "\データ.txt"

'新しく作成したブックを名前を付けて保存
ActiveWorkbook.SaveAs Filename:=a, FileFormat:=xlCurrentPlatformText
ActiveWorkbook.Close

End Sub

ですがこれを実行させると、添付画像のような画面になってしまいます。
これを、マクロを実行させたファイルの画面にさせたいのですが、どのようにすれば良いでしょうか?
よろしければ教えていただきたいです。

「Excel VBA マクロ 画面を表示」の質問画像
gooドクター

A 回答 (3件)

"ActiveWorkbook" という記述ほどミスが起きやすいものはない、と思ってます。


その時々でアクティブなブックが入れ替わってしまうため、プログラマーもしくは利用者が期待しているブックが ActiveWorkbook かどうか保証できないからです。

WorkBook、WorkSheet などを変数で参照してあげればコードも短くなりますし、狙いを外されることもありません。
Dim destBook As Workbook
Set destBook = Workbooks.Add

Dim destSheet As Worksheet
Set destSheet = destBook.Worksheets(1)

destSheet.Range("a1").PasteSpecial xlPasteValues
destBook.SaveAs ~
destBook.Close
みたいな
    • good
    • 0

こんにちは


Sheets.Add  ?
後のコードから推測すると
Workbooks.Add
ではないでしょうか。
    • good
    • 1

この行で、今開いているブックを閉じているからですよ。


>ActiveWorkbook.Close

下のコメントがありますが、実際には新しいブックを作成するコードがありません。
>'プログラムを新しいブックへコピーする
>'新しく作成したブックを名前を付けて保存
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング