プロが教えるわが家の防犯対策術!

こんにちは、エクセル365を使っています。

ブックを開いてA列を挿入して保存するマクロを書きました。
自分なりにOKだと思うのですが、保存されたブックはA列が挿入されていません。

F8で進めていくと、開いたファイルを選択する部分で進まなくなるので、開いたファイルを再度選択すれば進むので進めてみると、A列が挿入されているのが見えます。

そのまま保存してくれればOKなので最後まで進めると、保存してファイルが閉じるのですが、そのファイルを再び開いてみるとA列が挿入されていません。

自分的には謎なので、詳しい方教えて頂けませんか?

コードは以下のようなものです。

Sub ボタン1_Click()

Workbooks.Open "フォルダへのパス/〇〇CSV"

Workbooks("〇〇.CSV").Activate

Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

ActiveWorkbook.Save

Workbooks("〇〇.CSV").Close

End Sub

よろしくお願いします。

A 回答 (4件)

こんにちは。


Excel だけをお使いの方はあまり気にしていないでしょうけど、
Access から Excel のデータをインポートする場合に
よく、その範囲が問題になります。

例えば A1:D5 にデータが入力されている(ように見える)場合に、
ずっと大きな範囲が インポートされてしまう、等です。

大抵は、離れたところに「書式」が設定されていたり、
入力したセルを バックスペースで消したりして
シートにゴミが残っている場合です。

VBA では シートの Usedrange.Select で選択される範囲が 入出力の対象になります。

質問者さんの場合では逆に
A列を挿入しただけでは、そこはまっさらで
UsedRange にふくまれません。
新しいシートに B1 から入力したのと同じ状態です。

Excel に A1 セル が 使用されていることを分からせる必要があるのです。

列を挿入したあとに
Range("A1").NumberFormatLocal = "@"
の一行を加えてください。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
CSVにはそんな特徴があるのですね。
また、対処法ありがとうございます。
もともと文字を挿入するつもりでしたので、そのマクロを書いて挿入しました。
ありがとうございました。

お礼日時:2020/02/27 21:53

こんにちは、


VBAコードの問題では無いと思います。
CSVファイルに保存する際、カンマ区切りCSVで保存出来ないからではないでしょうか?
対象のCSVを手動で開き、列を挿入し、閉じてみてください。 ブックの一部の機能・・・・と言うアラートが出ると思います。
はいを押すとCSVで保存されますが、データ前の空の挿入列は削除されます。(保存されません)

手動で出来ない機能は、VBAでも例えば、FileFormat:=xlCSV などメソッドを付けても出来ないと思います。

どうにか、A列を挿入したい場合は、A1セルにダミーデータを入れれば、見かけ上できますが、CSVである意味が、、、
下記はおそらくこんな感じで

Sub ボタン1_Click()
Dim TagetBook As Workbook
Workbooks.Open ("フォルダへのパス/〇〇CSV")
Workbooks("〇〇.CSV").Activate
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1") = "'"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=""〇〇.CSV"", FileFormat:=xlCSV, Local:=True
Workbooks(""〇〇.CSV"").Close
Application.DisplayAlerts = True
End Sub

A1セルに ’ 入った列が挿入されています。
加工途中の操作での内容と思いますが、CSVファイルの先頭列に空列を挿入する意図は不明です。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
なるほど、CSVにはそんな特徴があったのですね、勉強になりました。
ありがとうございます。

お礼日時:2020/02/27 21:49

それは、csvファイルだからではないでしょうか?


csvファイルだと、,(コンマ)や空白(スペース)区切りになっているはずなので、それらを入力しないと挿入されないと思います。

こちらが参考になると思います↓
https://oshiete.goo.ne.jp/qa/3763697.html
    • good
    • 0
この回答へのお礼

回答いただき ありがとうございます。
CSVファイルの特徴なのですね、勉強になりました。
ありがとうございます。

お礼日時:2020/02/27 21:48

同一ファイル名の通常ファイルが作成されていませんか?


csv形式で保存するためにはオプションの設定が必要であったと思います。
参考に
【ExcelVBA入門】SaveAsメソッドを使ったファイル保存方法を徹底解説!
https://www.sejuku.net/blog/67491
    • good
    • 0
この回答へのお礼

回答頂き、ありがとうございます。
同名のファイルは存在しないようですが、空白のセルは未入力として認識されるようですね。
勉強になりました。

お礼日時:2020/02/27 21:47

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