Herzlich Willkommen auf meiner Seite!

Ich poste hier in unregelmäßigen Abständen Quellcodebeispiele und Gedanken zum Thema Visual Basic for Applications (VBA) und Excel, aber auch SQL, Access, Word und anderen Programmiersprachen.

Vielleicht hast Du ein interessantes VBA- oder Excel-Problem und suchst eine Lösung. Dann schick mir doch eine Email mit allen notwendigen Informationen.

Viel Spaß,
Tobias Schmid

Word - Abkürzungen identifizieren

Am Ende eines Berichts soll ein Abkürzungsverzeichnis erstellt werden. Die Suche nach den Abkürzungen kann sehr mühevoll sein. Abhilfe mit VBA: Dieses Skript durchsucht das Dokument nach Abkürzungen. Wichtig! Abkürzungen sind im Text wie folgt einzuführen: Visual Basis for Application (VBA).

Die Funktion PrintAbbreviations erzeugt eine Liste aller Abkürzungen im Direktbereich.

Option Explicit
  

Excel Easy

Schön und einfach dargestellte Basics gibt es unter
http://www.excel-easy.com/vba.html

Workbook gleichzeit mit und ohne VBA speichern

Unter Umständen muss man von einer Excel-Datei zwei Versionen vorhalten. Eine xlsm-Datei mit VBA-Quellcode und eine xlsx-Datei ohne VBA-Quellcode (zum Beispiel für den Versand). Folgender VBA-Code erstellt bei jedem Speichervorgang einer xlsm-Datei parallel eine xlsx-Datei. Der Code ist in "Dieser Arbeitsmappe" einzufügen.

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SaveAlsoAsXlsx
End Sub

Private Sub SaveAlsoAsXlsx()

Word 2013 vs. Word 2010 - Nicht bearbeitbare Dateien im Lesemodus öffnen

Bei der Umstellung von Word 2010 auf Word 2013 ist mir neulich ein Problem aufgefallen. Offensichtlich hat sich ein Standardwert geändert. Nicht bearbeitbare Dateien werden seit Word 2013 standardmäßig im Lesemodus geöffnet. Bei Automatisierungen mit VBA kann das zu Problemen führen.

Der Menüpunkt lautet: "E-Mail-Anlagen und andere nicht bearbeitbare Dateien im Lesemodus öffnen"
Die notwendige Einstellung kann auch über VBA erfolgen: Application.Options.AllowReadingMode=FALSE

Anzahl Zeichen in einem Text

Eine kleine Funktion um die Häufigkeit eines bestimmten Zeichens in einem Text zu bestimmen:

Private Function AnzahlZeichen(ByVal Text As String, ByVal SuchText As String) As Integer
    AnzahlZeichen = Len(Text) - Len(Replace(Text, SuchText, ""))
End Function

Sub Test()
    Debug.Print AnzahlZeichen("Visual Basic", "a")
End Sub

Tabellenblatt mit VBA neu berechnen

Die Berechnung der Arbeitsmappe/Tabellenblatt erfolgt über VBA mittels:

Application.Calculate

Allerdings wartet VBA nicht bis die Arbeitsmappe vollständig neu berechnet wurde. Dies kann bei umfangreichen Arbeitsmappen zu Problemen und falschen Werten führen. Besser ist es dann die Neuberechnung so zu starten:

Application.CalculateFull

Nun wartet VBA bis die Arbeitsmappe vollständig neu berechnet wurde.

Prüfen ob ein Wort in einem Word-Dokument vorkommt

Mit folgender Funtkion kann geprüft werden, ob ein Wort in einem Worddokument vorkommt.


Function WordExists(suche As StringAs Boolean
    Dim txt As String

    txt = ActiveDocument.Range.Text

Graue Rahmen bei Abbildungen in PowerPoint entfernen

Bei Powerpoint 2007 und Powerpoint 2010 kann es passieren, dass Grafiken (zum Beispiel png-Dateien) einen ungewollten, grauen Rahmen erhalten. Teilweise erscheint dieser Rahmen auch nur im Präsentationmodus. Der Rahmen lässt sich durch Zuschneiden der Grafik wieder entfernen. Doch wer möchte das schon manuell machen? Hier ein kleiner VBA-Quellcode:

Trendfunktionen mit RGP für quadratische Funktionen

In Exceldiagrammen können verschiedene Trendfunktionen hinzugefügt werden. Unter anderem quadratische Gleichungen und Polynome höherer Ordnung. Auch die ermittelte Gleichung kann im Diagramm dargestellt werden. Wie bekomme ich aber die Parameter der Gleichung in meine Excel-Tabelle?

C#-Blog von Oliver

Oliver veröffentlicht in seinem Blog hilfreiche Informationen zur Programmiersprache C#.Net. Wer also mal einen Blick über den VBA-Tellerrand werfen möchte sollte hier unbedingt mal vorbeischauen.

http://csharp-tricks.blogspot.com/

Inhalt abgleichen