Ein paar Zeilen Code und man kann sich die Größe der Festplatte visualisieren lassen:
Sub Festplatte()
Dim lngFestplattengröße As Double
Dim lngFreierPlatz As Double
Dim i As Integer
lngFestplattengröße = GetDriveSpace(Left(Application.Path, 2), DRIVE_TOTALSIZE) / 1000000
For i = 1 To 6
ActivePage.Shapes(„Text“ & i).Text = Format(Int(lngFestplattengröße / 7) * i / 1000, „#,##0“)
Next i
ActivePage.Shapes(„Gesamt“).Text = „Gesamtgröße der Festplatte: “ & Format(lngFestplattengröße, „#,##0″) & “ GByte“
lngFreierPlatz = GetDriveSpace(Left(Application.Path, 2)) / 1000000
ActivePage.Shapes(„Zeiger“).Cells(„Angle“).ResultFromInt(81) = 90 – (lngFreierPlatz / lngFestplattengröße) * 270
ActivePage.Shapes(„Zeiger“).Cells(„Angle“).Formula = „=“ & (90 – (lngFreierPlatz / lngFestplattengröße) * 270) & “ grad“
Okay – man benötigt noch eine FUnktion, die die Größe der Festplatte und den belegten Speicher anzeigt. Beispielsweise folgende:
Public Enum eSpaceType
DRIVE_FREESPACE = 1
DRIVE_TOTALSIZE = 2
End Enum
‚ Freien Speicherplatz/Gesamtgröße eines Laufwerks ermitteln
Public Function GetDriveSpace(ByVal sDrive As String, _
Optional ByVal nSpaceType As eSpaceType = DRIVE_FREESPACE) As Currency
Dim oWMI As Object
Dim oDrives As Object
Dim sSQL As String
Dim oDrive As Object
sSQL = „SELECT * FROM Win32_LogicalDisk WHERE DeviceID = ‚“ & sDrive & „‚“
Set oWMI = GetObject(„winmgmts:“)
Set oDrives = oWMI.ExecQuery(sSQL)
If Not oDrives Is Nothing Then
If oDrives.Count > 0 Then
For Each oDrive In oDrives
If nSpaceType = DRIVE_FREESPACE Then
‚ freien Speicherplatz zurückgeben
GetDriveSpace = oDrive.FreeSpace
Else
‚ Gesamtgröße des Datenträgers zurückgeben
GetDriveSpace = oDrive.Size
End If
Exit For
Next
End If
End If
Set oDrives = Nothing
Set oWMI = Nothing
End Function