Arbeitsblätter anzeigen
im Windows-Explorer werden bei markierter Excel-Datei die enthaltenen
Arbeitblätter aufgelistet
'Eine Text-Datei mit nachfolgendem Inhalt erstellen und als Lookexcel.vbs
abspeichern:
Dim objExcel
Dim objFileSystem
Dim objFile
Dim objWorksheet
Set listArgs = WScript.Arguments
If listArgs.Count = 0 Then
MsgBox "Keine Datei übergeben!"
Else
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(listArgs(0))
Set objExcel = Wscript.CreateObject("Excel.Application")
objExcel.Workbooks.Open(objFile.path)
For Each objWorksheet In objExcel.Workbooks(objFile.name).Worksheets
szMessage = szMessage & " " & objWorksheet.Name &
Chr(10)
Next
objExcel.Quit
Set objExcel = nothing
MsgBox szMessage,,"Enthaltene Arbeitsblätter"
End If
'In den Ordneroptionen den xls-Excel-Dateityp um einen neuen Vorgang
erweitern (Pfad anpassen, je nach Betriebssystem auch der Pfad zur wscript.exe).
Als Vorgang eintragen: Enthaltene Arbeitsblätter
Anwendung:c:\windows\wScript.exe d:\Pfad\lookexcel.vbs "%1"
Automakro auch per VBA
beim Öffnen oder Schließen einer weiteren Arbeitsmappe
ausführen
'Mit dem Aufruf RunAutoMakros werden auch automatische Makros beim Einsatz
von VBA in fremden Arbeitsmappen ausgeführt:
Workbooks.Open "test.xls"
ActiveWorkbook.RunAutoMacros xlAutoOpen
oder
ActiveWorkbook.Close
ActiveWorkbook.RunAutoMacros xlAutoClose ebenso ist der Aufruf von xlAutoActivate
bzw. xlAutoDeactivate möglich.
Nullwerte ausblenden
Die 0 wird nicht angezeigt, wenn für die Zelle das benutzerdefinierte
Format
0;-0;"" eingestellt ist.
Tabellenblätter auflisten
auf einem zusätzlichen Arbeitsblatt werden alle enthaltenen
Tabellenblätter aufgelistet
'das folgende Makro fügt ein weiteres Tabellenblatt "Inhalt"
hinzu und listet alle enthaltenen Blätter dieser Datei auf
Sub inhalt()
Sheets(1).Select
Sheets.Add
Sheets(1).Name = "Inhalt"
z = 1
For Each w In Worksheets
If w.Index <> 1 Then Range("a" & z - 1).Value = w.Name
z = z + 1
Next w
End Sub
Landkarten mehrfarbig gestalten
durch Aufhebung der Gruppierung in Word oder Powerpoint
Die Grafik kopieren, in Word oder Powerpoint einfügen, markieren und
in Ihre Bestandteile zerlegen bzw. Gruppierung aufheben. Wieder alles markieren
und in Excel einfügen. Jetzt können Sie die einzelnen Länder
auswählen und nach Wunsch farbig gestalten.
Zellbezüge absolut setzen
müssen Sie nicht manuell mit dem $-Zeichen. Es geht auch schneller
Zellbezüge absolut setzen
geht schneller, wenn Sie die Formel markieren und die Taste F4 drücken,
nochmaliges drücken setzt nur die Zeile,
ein weiteres drücken setzt nur die Spalte absolut.
Mit dem vierten drücken wird der Bezug wieder absolut - also frei von
den $-Zeichen
Nur sichtbare Zellen kopieren
geht mit einem Makro einfacher als es in Excel vorgegeben wird.
'gewünschten Bereich markieren und Makro auswählen. Die ausgeblendeten
Zeilen bzw. Spalten werden ignoriert.
sub nursichtbarKopieren()
selection.SpecialCells(xlCellTypeVisible).copy
end sub
Format mehrfach übertragen
mit einem Doppelklick auf die Schaltfläche "Format übertragen"
bleibt die Schaltfläche aktiviert, nacheinander alle Stellen
markieren und Format übertragen wählen.
Tabellenblatt benennen
dieses Makro übernimmt als Blattname den Inhalt der vorgegebenen
Zelle
Sub blattname()
bname = Range("b2").Value
ActiveSheet.Name = bname 'bei aktiven Tabellenblatt
End Sub
'oder bei einem bestimmten Tabellenblatt: Sheets("Tabelle1").Name
= bname eingeben
Programmstart mit Parameter
zusätzliche Parameter in der Kommandozeile beeinflussen den
Start
/e --Excel wird ohne Startbild und leerer Arbeitsmappe geöffnet
/m --startet mit Makroarbeitsblatt
/o --ergänzt evtl. fehlende Registry-Einträge. Bestehende
Einträge bleiben erhalten.
/p "pfad" --setzt angegebenen Pfad oder Ordner als aktiv,
der beim Öffnen und Schließen als erstes vorgeschlagen wird
/r "Datei" --öffnet angegebene Datei als schreibgeschützt
/s --startet Excel im abgesicherten Modus
/regserver --alle Registry-Daten werden neu zugeordnet
/unregserver --Excel entfernt alle Einträge aus der Registry
nur sichtbare Zellen kopieren
die ausgeblendeten Zeilen/Spalten bleiben verborgen
Markieren Sie den gewünschten Bereich, wählen Sie Bearbeiten -
Gehezu, wählen Sie Inhalte und aktivieren Sie die Option 'Nur sichtbare
Zellen'. Jetzt können Sie wie gewohnt kopieren und einfügen.
Ausdruck ohne Leerzeile
die störenden Leerzeilen werden vor dem Ausdruck ausgeblendet
'Vor dem Ausdruck werden die störenden Leerzeilen ausgeblendet,
nach dem Ausdruck wieder sichtbar gemacht.
Sub DruckZeilen()
Application.ScreenUpdating = False
Dim TB As Worksheet, i%, lZeile%
Set TB = Worksheets("tabelle1") 'Namen von Excel-Tabellenblatt
lZeile = TB.[a16384].End(xlUp).Row 'Bereich von Zeile1 bis zur festgelegten
Zeile
For i = 1 To lZeile
If IsEmpty(TB.Cells(i, 1)) Then TB.Rows(i).EntireRow.Hidden = True 'die
1 in Cells(i,1) steht für Spalte A
Next i
TB.PrintOut
TB.Range(TB.Cells(1, 1), TB.Cells(lZeile, 1)).EntireRow.Hidden = False 'nach
ausdruck wird die Zelle wieder sichtbar gemacht
End Sub
Automatische Telefonwahl
per Doppelklick auf die gewünschte Rufnummer. Einfache Ausführung
ohne Autostart und ohne Umwandlung der Zahlen.
'auch dieses Makro wird in das entsprechende Tabellenblatt eingefügt.
Ausgeführt wird das Makro mit einem Doppelklick auf die gewünschte
Telefonnummer.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel
As Boolean)
Dim strNummer As String
strNummer = ActiveCell.Value
If strNummer > "" Then
Shell "dialer.exe", vbNormalFocus
SendKeys strNummer & "{Enter}", True
ActiveCell.Value = strNummer
Else
MsgBox Prompt:="Keine Markierung vorhanden.", Title:="Nummer
wählen"
End If
End Sub
Vor dem Drucken Makro ausführen
mit einem Workbook-Ereignis
'Im Visual-Basic-Editor wählen Sie das gewünschte Tabellenblatt
aus, für welches das Ereignis gelten soll. In der rechten Fensterhälfte
öffnet sich nun ein Fenster mit 2 Dropdown-Listen - aus der linken
Liste (Allgemein) wählen Sie Workbook, aus der rechten Liste den
Eintrag BeforePrint. Anschließend fügen Sie Ihren gewünschten
Makrotext ein.
Dieses Makro wird vor jedem Druckauftrag ausgeführt. Gleiches gilt
auch für den Eintrag BeforeClose.
In folgendem Beispiel wird eine Fußzeile mit aktuellem Datum eingefügt:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each ws In Worksheets
If ws.PageSetup.RightFooter = "Druckdatum: &D" Then
ws.PageSetup.RightFooter = ""
End If
Next ws
End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each ws In Worksheets
ws.PageSetup.RightFooter = "Druckdatum: &D"
Next ws
End Sub
Jahreszahl in Kopf- oder Fußzeile
mit einem Makro vierstellig anzeigen
Sub Auto_Open()
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = Format(Date, "dd.mm.yyy")
.LeftFooter = ""
.CenterFooter = ""
.Right.footer = ""
End With
End Sub
Einzelnes Arbeitsblatt speichern
das aktuelle Arbeitsblatt wird unter dem Blattname extra abgespeichert.
Sub Blattspeichern()
pfad = InputBox("Geben Sie den Pfad ein, in dem das Blatt gespeichert werden
soll!", , "C:\bak\")
Select Case Right(pfad, 1)
Case ""
GoTo ErrorHandler
Case Is <> "\"
pfad = pfad & "\"
End Select
ActiveSheet.Copy
On Error GoTo ErrorHandler
ActiveWorkbook.SaveAs Filename:=pfad & ActiveSheet.Name
ActiveWorkbook.Close SaveChanges:=False
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox ("Speichervorgang war nicht erfolgreich")
ActiveWorkbook.Close SaveChanges:=False
Case Else
End Select
End Sub
Um in Excel Ihre Makros für alle Dateien
zur Verfügung zu haben, die Makros in einer separaten Datei abspeichern.
Diese Datei wird dann bei jedem Excel-Aufruf mit geladen, wenn sie
in den Ordner XLSTART in Ihrem Office-Verzeichnis abgelegt wird.
Maximum automatisch anzeigen
der größte Wert wird bei Tabellenaufruf automatisch
angezeigt
'Beim Öffnen einer Tabelle wird der Maximum-Wert des genannten
Bereiches in rot angezeigt. Die Tabellenblatt-Bezeichnung und der Bereich
muß angepaßt werden.
Sub auto_open()
Sheets("Tabelle1").OnEntry = "maxanz"
End Sub Sub maxanz()
On Error GoTo End
Dim MeinBereich As Range
Set MeinBereich = Worksheets("Tabelle1").Range("A1:A500")
MeinBereich.Font.ColorIndex = 0
For Each abc In MeinBereich
If abc.Value = Application.Max(MeinBereich) Then
abc.Font.ColorIndex = 3
End If
Next
End:
Exit Sub
End Sub