• 締切済み

データ上のサイズを取得したい

実際のサイズではなくデータ上のサイズを取得するためにはどう変更したらいいですか。 Option Explicit 'シートの名前を変更する Private Sub workbook_open() Dim fso As Object Dim filePath As String Dim fileSize As Double ' ファイルパスを取得 filePath = ThisWorkbook.FullName ' ファイルシステムオブジェクトを作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルサイズを取得(単位はバイト) fileSize = fso.GetFile(filePath).Size ' ファイルサイズをKBに変換(切り上げ) fileSize = Application.WorksheetFunction.RoundUp(fileSize / 1024, 0) ' ワークシートの名前を変更 Dim NewSheetName As String NewSheetName = fileSize & "KB" Sheets(1).Name = NewSheetName End Sub

みんなの回答

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

「データ上のサイズ」と言われているのは、ファイルのプロパティ画面に表示される「ディスク上のサイズ」のことでしょうか。 それでしたら、まずファイルシステム上の最小単位を調べる必要があります。 こちらなどを参考に、diskpart を使ったアロケーションユニットサイズを確認します。 https://www.ipentec.com/document/windows-show-drive-sector-size select volume ではそのファイルを保存しているドライブ(パーティション)を選択してください。 仮にアロケーションユニットサイズが 4096 だった場合は以下のように、ディスク上のサイズに切り上げの処理を追加してみてください。 ---- ' ファイルサイズを取得(単位はバイト) fileSize = fso.GetFile(filePath).Size ' ディスク上のサイズに切り上げ fileSize = Application.WorksheetFunction.RoundUp(fileSize / 4096, 0) * 4096 ' ファイルサイズをKBに変換(切り上げ) fileSize = Application.WorksheetFunction.RoundUp(fileSize / 1024, 0) ----

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

質問文中の「実際のサイズ」と「データ上のサイズ」を赤の他人にも分かるように説明しましょう。 日本語での説明が難しければ、実例でも良いです。