<質問の概要>
Excel2010でマクロから特定のセルに対して、通貨の書式を設定し、メニューから名前を付けて保存した場合は、
再度ファイルを開いても設定した書式のままになっています。
しかし、保存をメニューからではなく、マクロ上のSaveasで実施した場合、
再度ファイルを開くと設定した書式とは違う書式になってしまいます。
対処方法または不具合情報等ございますでしょうか?
<質問の詳細>
下記処理を行った場合に、メニューから行った場合とマクロから行った場合で結果が違います。
■ メニューから保存するケース(問題なし)
1)xlsm形式のファイルのマクロ内で新しくワークブックを作成し、セルを選択します。
2)xlsm形式のファイルのマクロ内で選択したセルに通貨の書式設定を行います。
3)上記1)~2)で作成された新規ファイルを手動で「ファイル」-「名前を付けて保存」-「Excelブック(*.xlsx)」を選択して保存
4)上記3)で保存したファイルを再度Excel2010で開き、書式を確認したところ、上記2)で設定した書式のままでした。
-----------
Sub 書式設定()
'
' 新しいワークブックを作成
Dim wb As Workbook
Set wb = Workbook.Add
wb.ActiveSheet.Range("A1:B2").Select
' 作成したワークブックのセルに下記の書式を設定
' - 分類:通貨
' - 小数点以下の桁数 : 0
' - 記号:\
' - 負の数の表示形式:\-1,234(黒色文字)
Selection.NumberFormatLocal = "\#,##0;\-#,##0"
' 作成したファイルをメニューから手動で保存
End Sub
-----------
■ マクロから保存するケース(問題あり)
1)xlsm形式のファイルのマクロ内で新しくワークブックを作成し、セルを選択します。
2)xlsm形式のファイルのマクロ内で選択したセルに通貨の書式設定を行います。
3)xlsm形式のファイルのマクロ内でSaveasを利用して作成したファイルの保存を行います。
※Saveasのコードは、「メニューから保存するケース」でマクロ記録を実施した際に自動生成されたコードと同じです。
4)上記3)で保存したファイルを手動で「×」ボタンから閉じる。※一度保存しているので、上書き保存は聞かれない。
5)再度上記3)で保存したファイルをExcel2010で開き、書式を確認したところ、上記2)で設定した
書式から別の書式に変わっていました。
-----------
Sub 書式設定して保存()
'
' 新しいワークブックを作成
Dim wb As Workbook
Set wb = Workbook.Add
wb.ActiveSheet.Range("A1:B2").Select
' 作成したワークブックのセルに下記の書式を設定
' - 分類:通貨
' - 小数点以下の桁数 : 0
' - 記号:\
' - 負の数の表示形式:\-1,234(黒色文字)
Selection.NumberFormatLocal = "\#,##0;\-#,##0"
' ワークブックを保存(保存場所は適宜変更してください)
wb.SaveAs Filename:="C:\Users\○○○\Desktop\Book1.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
-----------
-----------
<<再度、開いたときに設定されていた書式>>
分類:通貨
小数点以下の桁数 : 0
記号:\
負の数の表示形式:(\1,234) (黒色文字)
※書式としては下記
"\#,##0_);(\#,##0)"
-----------
なお、上記の現象はExcel2003では発生しませんが、Excel2007では発生しました。
設定方法がおかしいのか?保存方法がおかしいのか?Excel2007以降の不具合なのか?不明ですが、
どなたかマクロ上で保存しても書式が変わらないようにする対処方法や不具合情報等、ご存じであればご教示ください。
宜しくお願い致します。