(オンラインxmlからいくつかの値を更新した後)1つのシートをCSVファイルに保存する必要があるvbaマクロがあります。これは機能しますが、CSV ファイルを開くと、次のように表示されます。
CHF,Swiss Franc,1.2352,,,
CNY,Yuan Renminbi,8.1803,,,
EUR,Euro,1,,,
GBP,Pound Sterling,0.8585,,,
HKD,Hong Kong Dollar,10.3617,,,
SGD,Singapore Dollar,1.7097,,,
USD,US Dollar,1.3361,,,
,,,,,
,,,,,
したがって、問題は、3 つの空の列と 2 つの空の行も保存されることです。ExcelでCSVファイルを開いた後、これで問題が発生しないことはわかっていますが、インポートするプログラムでは発生します。
いくつかの調査を行ったところ、これはおそらく UsedRange に関係していることがわかりました。しかし、usedRange を新しい値に設定する方法が見つからないか、シートのごく一部しか保存できませんでした。
おそらく、必要な範囲をコピーし、新しいワークブックを開き、この範囲を貼り付けてファイルに保存できますが、これは本来よりも少し難しいようです. また、この新しいワークブックの UsedRange も大きくないという保証はありません。
usedrange を設定する方法や、別の方法でやりたいことを行う方法を知っている人はいますか? 私は完全な VBA のアマチュアなので、奇妙なことをしたとしたら、それが理由です。
私のコードの残りの部分は正常に動作するため、問題は保存されたファイルの余分なコンマだけです。
私のVBAコードは以下の通りです:
Sub updateCurrencies()
'
' updateCurrencies Macro
'
' Keyboard Shortcut: Ctrl+e
'
Application.DisplayAlerts = False
Dim wb As Workbook
Dim ws As Worksheet
Dim file As String
file = "\\SBS2008\RedirectedFolders\jasper\Desktop\currencies.csv"
Sheets("Sheet1").Select
ActiveWorkbook.XmlMaps("Envelope_Map").DataBinding.Refresh
Set ws = Sheets("currencies")
ws.Select
ActiveWorkbook.RefreshAll
ws.SaveAs file, FileFormat:=6
Sheets("info").Select
Set wb = Workbooks.Open(file)
wb.Save
Sheets("info").Select
Call CloseAllWorkbooks
End Sub
Public Sub CloseAllWorkbooks()
Dim wb As Workbook
For Each wb In Workbooks
If (wb.Name = "currencies") Then
wb.Close True
Else
wb.Close False ' Or True if you want changes saved
End If
Next wb
End Sub