回答:
幸いなことに、CSVとしてエクスポートしたいコードはに文書化されています。 この答え 。
あなたがする必要があるのは、ワークシートが変わるたびに変わる関数からそれを呼び出すことです(それはまさしくそのように呼ばれます) Worksheet_Change
そして、B22であることを確認します。
両方をまとめると、次のようなコードになります。
' Worksheet_Change
' Called whenever a change is made to a cell in a worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
' Check if cell B22 has been changed
If Not Application.Intersect(Range("B22"), Range(Target.Address)) Is Nothing Then
' It has changed
Call ExportWorksheetAndSaveAsCSV
End If
End Sub
' ExportWorksheetAndSaveAsCSV
' Saves the contents of Sheet1 to a CSV file in c:\tmp\test.csv
' If the file already exists, it will be silently overwritten
Public Sub ExportWorksheetAndSaveAsCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets("Sheet1") 'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False 'Possibly overwrite without asking
wbkExport.SaveAs Filename:="C:\tmp\test.csv", FileFormat:=xlCSV
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
End Sub
そのシート名( Sheet1
)とファイル名( C:\tmp\test.csv
)はハードコードされています。私がこれを書いたならば、私はおそらく変数としてこれらの両方を渡します ExportWorksheetAndSaveAsCSV
。
On Error Resume Next
前の行に wbkExport.SaveAs
そして On Error Goto 0
後の行に wbkExport.Close
。ファイルを保存しようとしてエラーが発生した場合は、無視します。それが起こるならば、あなたがあなたの変更その時の時間があなたが次にセルB22を編集する時まで保存されないことを心に留めておいてください。