Alle Antworten einer Sharepointumfrage/-survey löschen

Microsoft Sharepoint bietet u.a. an relativ leicht Umfragen zu erstellen. Leider wurde (bewusst oder unbewusst?!?) vergessen, alle Antworten in einem Rutsch zu löschen, also die Umfrage zu initialisieren. Bei ein paar Antworten kann man da vielleicht noch einzeln Hand anlegen, aber spätestens bei ein paar hundert oder tausend Antworten wird das schnell zu zeitraubenden Fleißaufgabe.

Im Internet wird häufig folgendes Vorgehen zum Löschen der Ergebnisse vorgeschlagen:
Die Survey als Template ohne Inhalte speichern, löschen und abschließend das Template wieder einbinden.

Ich persönlich bevorzuge allerdings den Weg über „Site Content and Structure“. Leider wird dieser Menüpunkt (i.d.R. unter Site Actions) standardmäßig in diesem Kontext nicht angeboten. Man kann die Ansicht aber aktivieren, indem man der Root-Adresse folgenden Zusatz anhängt:

/_layouts/sitemanager.aspx

Also zum Beispiel:

http://meine.url.de/mein/Sharepoint/_layouts/sitemanager.aspx

Anschließend navigiert man zur entsprechenden Umfrageliste, aktiviert in einem Rutsch alle Checkboxen neben den Antworten und wählt abschließend Actions->Delete. Diesen Vorgang muss man je Seitengröße und Antwortanzahl entsprechend oft wiederholen.Daher bietet es sich bei vielen Antworten an, die Seitengröße auf den Maximalwert hochzusetzen.

Veröffentlicht unter Sharepoint | Verschlagwortet mit , | 1 Kommentar

Aktive Zelle in Pivot (Excel VBA)

Ab und an kann es notwendig sein, zu prüfen, ob die aktuelle Zelle innerhalb einer Pivot-Tabelle liegt oder nicht.

Angehängte Funktion prüft genau das und liefert einen entsprechenden Wahrheitswert zurück. Die Funktion erwartet keinen Parameter und prüft immer nur die ausgewählte Zelle.

Sollte ihr andere Zellen prüfen wollen, ist es natürlich ein leichtes die Funktion entsprechend umzuschreiben.

Function isActiveCellinPivot() As Boolean
    Dim pvtTable As PivotTable
    
    On Error Resume Next
    Set pvtTable = ActiveCell.PivotTable
    On Error GoTo 0

    isActiveCellinPivot = Not (pvtTable Is Nothing)

End Function
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

A1 und Z1S1 Reference Style/Bezugsart (Excel VBA)

Beim Entwickeln neuer Makros muss man immer wieder mal die Nummer einer Spalte ermitteln. Das geht – zumindest für mich – am besten, wenn man kurzzeitig den Reference Style (aka Bezugsart) von A1 auf Z1S1 (bzw. R1C1) umstellt.

Als fauler Mensch ist mir der Weg über das Menü immer zu lange, daher hab ich das mal schön als Mini-Makro ver- und in mein „Brauch ich immer“-AddIn gepackt.

Pro Aufruf der Prozedur „ChangeReferenceStyle“, wird immer zwischen den Darstellungen hin und her geschalten …

Sub ChangeReferenceStyle()

    If Application.ReferenceStyle = xlR1C1 Then
        Application.ReferenceStyle = xlA1
    Else
        Application.ReferenceStyle = xlR1C1
    End If
    
End Sub
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Arbeitsblätter (Sheets) sortieren (Excel VBA)

Immer wieder kann es vorkommen, dass man alle Arbeitsblätter in einer Excel-Arbeitsmappe alphabetisch aufsteigend oder absteigend sortieren muss.

Folgender Code erledigt dies in Windeseile. Einfach aufrufen! Fertig!

Ohne Parameter werden die Arbeitsblätter aufsteigend sortiert. Mit dem optionalen Parameter kann man die Arbeitsblätter auch absteigend sortieren lassen (also durch den Aufruf von „SortSheets False“)

Sub SortSheets(Optional bSortASC As Boolean = True)

    Dim i As Integer
    Dim j As Integer
    
    For i = 1 To Sheets.Count
        For j = 1 To Sheets.Count - 1
            If bSortASC Then
                If LCase(Sheets(j).Name) > LCase(Sheets(j + 1).Name) Then
                    Sheets(j).Move After:=Sheets(j + 1)
                End If
            Else
                If LCase(Sheets(j).Name) < LCase(Sheets(j + 1).Name) Then
                    Sheets(j + 1).Move Before:=Sheets(j)
                End If
            End If
        Next j
    Next i
    
End Sub
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Live Meeting Einladung in anderer Sprache

Wir nutzen hier bei uns für Onlinebesprechungen das Tool Live Meeting aus dem Hause Microsoft. Eine Onlinebesprechung wird hier ähnlich geplant, wie jeder andere Termin in Outlook.

Leider wird als Standardsprache für die Einladungsmail mit allen relevanten Einwahlinfos immer die Sprache verwendet, die Office per default nutzt. Das ist in den meißten Fällen aber nicht sinnvoll. Was bringt einem Engländer eine deutsche Einladungsmail (es sei denn er spricht deutsch natürlich ;))

Microsoft bietet aber leider auch keine Möglichkeit an die Sprache per Klick oder Option zu ändern. Nur das Umschalten der Officesprache würde hier weiterhelfen.

Es gibt aber dennoch ein kleinen Trick die Sprache zu ändern: Im Standardprogramme-Ordner (i.d.R. C:\Programme oder C:\Program Files) unter „\Common Files\Microsoft Shared\LiveMeeting Shared\“ findet ihr verschiedene Ordner mit Ländercodes („de-DE“ für Deutsch, „en-US“ für US-Englisch, usw).

Wenn Ihr nun die Datei „ConfApiSat.dll“ z.B. aus dem Ordner „en-US“ in den Ordner „de-DE“ kopiert, wird künftig bei einem deutschsprachigen Office die Einladungsmail für Livemeeting in englischer Sprache erzeugt.

Beschrieben ist das ganze auch noch in der Microsoft KB.

Hinweis am Rande: Die Datei „ConfApiSat.dll“ am Besten nicht überschreiben, sondern sichern, damit ihr die Originalsprache ggf. wieder herstellen könnt.

Veröffentlicht unter Livemeeting | Verschlagwortet mit , | 1 Kommentar

Hyperlinks entfernen (Excel VBA)

Heute gibt es mal einen kleinen No-Brainer zum Entfernen von Hyperlinks aus dem gesamten Worksheet oder nur der aktuellen Markierung. Sehr einfach, aber doch sehr nützlich und zeitsparend.

' Entfernt Hyperlinks aus der aktuellen Zellselektion
Sub RemoveHyperlinksFromSelection()
    Selection.Cells.Hyperlinks.Delete
End Sub

' Entfernt Hyperlinks vom gesamten aktiven Sheet
Sub RemoveHyperlinksFromWorksheet()
    ActiveSheet.Cells.Hyperlinks.Delete
End Sub
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Gesendete Mails in Ordner verschieben (Outlook VBA)

In Outlook ist es mit Boardmitteln nicht möglich gesendete Mails in einem anderen Ordner als im Ordner „Gesendete Objekte“ zu speichern. Jetzt gibt es dann doch den einen oder anderen Kollegen, der seine gesendeten Mails lieber in seinem Posteingang abgelegt haben will. (Mir erschließt sich zwar nicht genau der Grund, aber Wunsch ist Wunsch ;))

Ein kleines VBA-Makro hilft dieses Anliegen zu ermöglichen. Der Code muss in den „ThisOutlookSession“-Teil des VBA-Projects (in Outlook über Alt + F11 zu erreichen) kopiert werden.

Nach einem Outlook-Neustart werden dann alle gesendeten Mails automatisch in den Posteingang kopiert. Wer einen anderen Ablageordner wünscht, kann den Zielordner natürlich im Makro beliebig anpassen.

Public WithEvents SentItems As Outlook.Items

Private Sub Application_Startup()
    Set SentItems = Outlook.Session.GetDefaultFolder(olFolderSentMail).Items
End Sub

Private Sub Application_Quit()
    Set SentItems = Nothing
End Sub

Private Sub SentItems_ItemAdd(ByVal Item As Object)
    Item.Move Outlook.Session.GetDefaultFolder(olFolderInbox)
End Sub
Veröffentlicht unter Outlook, VBA | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Remote: Rechnername, angemeldeter User und MAC-Adresse (Windows)

Nachdem ich diese Befehle immer wieder vergesse, sie aber in unregelmäßigen Abständen immer wieder brauche und desshalb jedes mal neu ergooglen muß, schreibe ich sie hier mal nieder.

Ermitteln des Rechnernamens über die IP-Adresse:

nslookup <IP-Adresse>

Ermitteln des aktuell angemeldeten Users eines Systems:

nbtstat -a <Hostname>

oder sollte man nur die IP-Adresse haben

nbtstat -A <IP-Adresse>

Ermitteln der MAC-Adresse eines Rechners:

ping <IP-Adresse>
arp -a
Veröffentlicht unter Shell, Windows | Verschlagwortet mit , , , , | 1 Kommentar

Prüfen, ob ein Arbeitsblatt existiert (Excel VBA)

Oft kommt man bei der Excel Makro Programmierung in die Situation zu Prüfen, ob ein bestimmtes Arbeitsblatt vorhanden ist. Hierfür gibt es meines Wissens zwei Vorgehensweisen.

  1. Die erste Möglichkeit ist, mit einer Schleife durch alle Arbeitsblätter einer Arbeitsmappe zu gehen, um zu prüfen, ob das gesuchte Sheet mit dabei ist.
  2. Die zweite Variante nimmt die Brechstange und versucht das gewünschte Blatt zu refernzieren. Tritt ein Fehler auf, ist das Blatt nicht vorhanden.

Ich persönlich bevorzuge die erste Variante, da ich gerne – soweit möglich – auf provozierte Fehler verzichte, daher zeige ich Euch hier auch nur meinen „Favoriten“.

Die Funktion erwartet als Parameter den Namen des gesuchten Arbeitsblattes. Sollte das gesuchte Arbeitsblatt nicht in der aktiven Arbeitsmappe liegen, kann man optional als zweiten Parameter ein Workbook-Objekt angeben, in der gesucht werden soll. Als Ergebnis wird ein Boolean-Wert (true/false) zurückgeliefert.

Function WorksheetExists(strWorksheet As String, Optional ByRef cWB As Workbook = Nothing) As Boolean
    Dim sh As Worksheet
    Dim flg As Boolean
    
    On Error GoTo Err_Handler
    
    If cWB Is Nothing Then
        Set cWB = ActiveWorkbook
    End If
    
    flg = False
    For Each sh In cWB.Worksheets
        If sh.Name = strWorksheet Then
            flg = True
            Exit For
        End If
    Next

    WorksheetExists = flg
    Exit Function
    
Err_Handler:
    WorksheetExists = False
    
End Function
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | 1 Kommentar

Zellbereich von User auswählen lassen (Excel-VBA)

Dann fangen wir gleich mal an. Um aus einem Excel-Makro heraus den User einen Zellbereich auswählen zu lassen, den man für die weiteren Arbeitsschritte benötigt, kann man folgenden Code verwenden.

Die Funktion erwartet keinen Parameter und liefert als Ergebnis ein Range-Objekt zurück. Das Range-Objekt hat den Wert [nothing], wenn der Benutzer auf Abbrechen geklickt hat oder wenn ein Fehler aufgetreten ist.

Function SelectRangeByUser() As Range
   
    On Error GoTo Err_Handler
    Set SelectRangeByUser = Application.InputBox("Bitte einen Zellbereich auswählen", "Zellbereich auswählen", Selection.Address, , , , , 8)
    Exit Function

Err_Handler:
    Set SelectRangeByUser = Nothing

End Function
Veröffentlicht unter Excel, VBA | Verschlagwortet mit , , , | Hinterlasse einen Kommentar