Archive for the ‘Programmierung’ Category.

In Excel den Monats- und Quartalsersten/-letzten bestimmen

Den ersten und letzten Tag eines Monats bzw. Quartals kann man recht einfach in Excel bestimmen.

Sei in A1 ein Datum, für das die Werte bestimmt werden sollen.

  • Monatserster: =DATUM(JAHR(A1);MONAT(A1);1)
  • Monatsletzter: =DATUM(JAHR(A1);MONAT(A1)+1;1)-1
  • Quartalserster: =DATUM(JAHR(A1);MONAT(A1)-REST(MONAT(A1)-1;3);1)
  • Quartalsletzter: =DATUM(JAHR(A1);MONAT(A1)+REST(3-MONAT(A1);3)+1;)

Hier noch ein paar Datumsformeln:

  • Quartal =AUFRUNDEN(MONAT(A1)/3;0)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Python LaTeX-Code erzeugen

Die programmatische Erstellung von LaTeX-Code durch ein Framework hat mich schon immer interessiert, über ein stackexchange Posting (http://tex.stackexchange.com/questions/41875/generate-latex-truth-table-with-python-cheetah) wurde jetzt auch mein Interesse an der Erzeugung durch Python geweckt.

Hier ein Beispiel für die Erzeugung von LaTeX durch das Python Cheetah framework:

from Cheetah.Template import Template
definition = """\\documentclass{article}
 
\\title{$paper.title}
\\author{$author.name}
 
\\begin{document}
 
\\maketitle
 
 
\\end{document}"""
 
class author:
    """A simple example author class"""
    name = "Uwe Ziegenhagen"
    def f(self):
        return 'Hello World'
 
class paper:
    """A simple example paper class"""
    title = "My First paper"
    def f(self):
        return 'hello world'
 
 
uwe = author()
mypaper = paper()
 
print Template(definition, searchList=[{'author' : uwe,'paper' : mypaper}])

Erzeugt wird dadurch folgendes Dokument:

\documentclass{article}

\title{My First paper}
\author{Uwe Ziegenhagen}

\begin{document}

\maketitle

\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Outlook-Automatisierung mit Excel

Zu meinen aktuellen Aufgaben gehört es gelegentlich, Aufträge an den IT-Dienstleister in einem bestimmten Format zu verfassen. Nachdem ich einige Male die notwendigen Texte mühevoll zusammenkopiert hatte, kam der Wunsch nach der Automatisierung des ganzen auf. Mit ein wenig VBA Code und Google (http://www.exceltip.com/show_tip/Applications_-_Word,_Outlook_in_VBA/Control_Outlook_from_Excel_using_VBA_in_Microsoft_Excel/464.html) ist es recht einfach, die E-Mails zusammenzubauen.

Hier ein einfaches Beispiel: Aus der jeweils aktiven Zeile sollen E-Mail Adresse, Betreff und Body ausgelesen und in eine E-Mail gesetzt werden, die aktive Zeile ermittele ich dabei über currentrow = ActiveCell.Row.

Der Code, der unter dem Link verfügbar ist, benötigt eine Referenz zur Microsoft Outlook Object Library, diese lässt sich über Extras => Verweise einfügen. Wenn wir das Beispiel auf unser Szenario anpassen, erhalten wir:

Sub SendAnEmailWithOutlook()

currentrow = ActiveCell.Row

Dim OLF As Outlook.MAPIFolder, olMailItem As Outlook.MailItem
Dim ToContact As Outlook.Recipient
    Set OLF = GetObject("", _
        "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set olMailItem = OLF.Items.Add ' erstellt neue Mail
    With olMailItem
        .Subject = Cells(currentrow, 3).Value ' Betreff
        Set ToContact = .Recipients.Add(Cells(currentrow, 2).Value) ' Empfänger
        .Body = Cells(currentrow, 4).Value ' Body
        .Save ' nur Speichern, nicht sofort senden
    End With
    Set ToContact = Nothing
    Set olMailItem = Nothing
    Set OLF = Nothing
End Sub

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell: Ersetzungen in Dateinamen durchführen

Hier ein kurzer Schnipsel, wie man Zeichen in Dateinamen ersetzen kann. Für die tatsächliche Umbenennung ist das „-whatif“ zu entfernen.

$files = gci -Recurse | ? {$_.PSisContainer -eq $false} |  ? {$_.name -match "~"}
 
foreach ($i in $files){
            rni -WhatIf $i.fullname $i.Name.Replace("~","_")
}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell Ressourcen

Bei der täglichen Arbeit hilft mir die Microsoft Powershell sehr. Hier ein paar Links zu den wichtigsten Büchern & Webseiten:

Bücher

  • Schnelleinstieg in die Windows Powershell von Andy Oakley
  • Windows PowerShell Crashkurs von Peter Monadjemi
  • Windows PowerShell für Administratoren und Power-User von Helma Spona
  • Windows PowerShell von Holger Schwichtenberg

Online (Microsoft)

Online

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Excel VBA: Zeilen duplizieren

Hier ein kurzes Makro, um den Wert der aktuellen Zelle in der Zeile darunter zu duplizieren.

Sub Makro1()
'
' Makro1 Makro
'
'
    ActiveCell.Offset(1, 0).Select
    Application.CutCopyMode = False
    Selection.EntireRow.Insert
    ActiveCell.Offset(-1, 0).Select
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Offset(1, 0).Select
End Sub

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

IO-Performance verschiedener Powershell-Befehle

http://blogs.technet.com/b/gbordier/archive/2009/05/05/powershell-and-writing-files-how-fast-can-you-write-to-a-file.aspx zeigt verschiedene Wege, mittels Powershell Daten in eine Datei zu schreiben, die Unterschiede sind schon recht drastisch zwischen den eingebauten und .Net Befehlen.

Wenn jemand selbst mal die Performance messen möchte: Unter http://poshtips.com/2010/03/30/measuring-elapsed-time-in-powershell/ findet sich ein kurzer .Net Schnipsel, um das StopWatch Objekt aus Powershell heraus anzusprechen. Der StreamWriter braucht auf meinem Laptop ca. 0,54 Sekunden.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Excel MD5 Summen berechnen

Externe Tools mögen zwar deutlich performanter sein, manchmal reicht es aber auch, MD5 Prüfsummen in Excel selbst zu bestimmen. Unter http://www.tutorials.de/visual-basic-6-0/275442-md5-per-vba.html findet man entsprechenden VBA Code, der die entsprechende Funktion als Formel bereitstellt. Es empfiehlt sich, den kompletten Thread zu lesen, da in diesem Code noch Referenzen auf eine Progressbar entfernt oder auskommentiert werden müssen.

Informationen zu MD5 selbst finden sich zum Beispiel in der Wikipedia: http://de.wikipedia.org/wiki/Message-Digest_Algorithm_5.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit VBA die Namen aller Excel Arbeitsblätter ausgeben

Gelegentlich ist es hilfreich, die Namen aller Arbeitsblätter in einer Excel-Mappe zu kennen. Der folgende VBA Code gibt genau dies aus:

Sub SheetNames()
    For i = 1 To Sheets.Count
        Cells(i, 1) = Sheets(i).Name
    Next i
End Sub

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell: AD-Gruppen des aktuellen Users auslesen

Hier ein kurzer Code-Schnipsel, um die Gruppen des aktuellen Users auszugeben:

$groups = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
foreach($i in $groups){
$i.Translate([System.Security.Principal.NTAccount]).value
}

Um die Gruppen eines beliebigen Users auszulesen muss ein anderer Ansatz gewählt werden: (http://stackoverflow.com/questions/8009593/list-group-memberships-for-ad-users)

Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$username = read-host -prompt "Enter a username"
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain
$user = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ct, $username)
$groups = $user.GetGroups()
foreach($i in $groups){
     $i.SamAccountName
}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website