
データベースからデータを取得するためのマクロが組み込まれた Excel シートがあります。Excel シートを保存して、データを保持したまま誰かに送信したいのですが、マクロを使用しているため、ファイルを送信するとデータベースに接続できず、データが失われます。
データがすべて静的になるように、マクロを使用せずにこのファイルを保存/送信する方法はありますか?
答え1
.csv ファイルとして保存すると、セルのデータ値のみが保持され、他のものは何も保持されません (数式も保持されません)。その後、その形式が好みであれば、新しい .csv ファイルから .xls ファイルとして保存できます。
答え2
ファイルを保存するコードは次のとおりです。
Option Explicit
Sub SaveValuesToDisconnectedFile()
Sheets("Sheet1").Copy
Sheets("Sheet1").Name = "DataFromDB"
ActiveSheet.UsedRange.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.SaveAs Filename:="C:\Temp\Offline Data.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
「Sheet1」を、データを含むシートの名前に置き換えます。また、ファイルを保存する場所へのパスを置き換えることもできます。
これを 2 回実行すると、ファイルがすでに存在するため、キャンセルするか既存のファイルを上書きするかを確認するプロンプトが表示されることに注意してください。