Posts

Es werden Posts vom August, 2010 angezeigt.

Prozesse!

Bild
In der Mittagspause kam mir die Idee schnell einen Prozessviewer zu coden. Prozesse werden angezeigt, gekillt, geschlosssen bzw. gecheckt. Da in Visual Studio 2010 mit VB programmiert, ist das NET Framework auf dem Client natürlich nötig.

Prozesse auflisten, killen, beenden, checken... [ZIP, 80 KB]

Beim Killen VORSICHT! DATENVERLUST! Ist manchmal ganz nützlich wenn beim rumprobieren auf einmal viele Excelinstanzen - oder welches Programm auch immer - vorhanden sind.



Beim Schließen habe ich noch die Möglichkeit Daten zu speichern.



Na ja - die Form schließen!



Ist die Liste recht lang kann man über die OptionButton bzw. über Buchstabe in Textfeld eingeben und Return drücken die Liste eingrenzen.



Datei checken klingt ganz schön großkotzig. Ist aber nichts anderes, als eine Suche des Dateinamens über Google. Der erste Eintrag zeigt mir in der Regel dann schon um was es sich handelt.

Leere Ordner!

Ab einem wählbaren Startordner soll das gesamte Verzeichnis inklusive aller Unterordner nach leeren Ordnern durchsucht werden - diese werden im "Direktfenster" (VBA-Editor Strg+G) aufgelistet. Zwei Versionen - einmal für Excel ab XP (2002) und einmal für Excel97.

Leere Ordner auflisten... [ZIP, 110 KB]

Code ab Excel XP (2002):

Option Explicit
Private Declare Function GetCurrentDirectory Lib "kernel32"_
Alias "GetCurrentDirectoryA"_
(ByVal nBufferLength&,ByVal lpBuffer$)AsLong
Private Declare Function SetCurrentDirectory Lib "kernel32"_
Alias "SetCurrentDirectoryA"(ByVal lpPathName$)AsLong
Dim objSubFolder AsObject
Dim objTMPFolder AsObject
Dim objFolder AsObject
Dim objFSO AsObject
PublicSub Emty_Folder_List()
Dim strDirOld AsString
Dim strTMP AsString
OnErrorGoTo Fin
strDirOld$ =String(255,0)
Call GetCurrentDirectory(255, strDirOld$)
strDirOld$ =Left(strDirOld$,_
InStr(1, strDirOld$, vbNullChar)-1)
Set objFSO =CreateObject("Script…

Werte verteilen!

Eine Liste soll auf mehrere Tabellenblätter aufgeteilt werden. Die Kriterienspalte ist Spalte A. Die Überschriftenzeile soll auf jedem Tabellenblatt erscheinen. Bei erneutem ausführen des Makros sollen die angelegten Tabellenblätter zuerst gelöscht werden. Es gibt dazu zwei Beispielcodes und eine Beispieldatei:

Liste auf mehrere Tabellenblätter aufteilen... [ZIP, 60 KB]

Dann noch ein Link auf das Thema - dort gibt es auch Formellösungen:

Liste aufteilen...

Code1:

Option Explicit
PublicSub Aufteilen()
Dim wksSheet As Worksheet
Dim wksTMP As Worksheet
Dim rngRange As Range
Dim rngTMP As Range
Dim lngRow AsLong
OnErrorGoTo Fin
With Application
.ScreenUpdating =False
.DisplayAlerts =False
EndWith
ForEach wksTMP In ThisWorkbook.Worksheets
If wksTMP.Name Like "Klasse*"Then
wksTMP.Delete
EndIf
Next wksTMP
Set wksSheet = ThisWorkbook.Worksheets("Gesamt")
With wksSheet
Set rngRange =.Range("A1").CurrentRegion
rngRange.Sort Key1:=.Range("A2"), Order1:=xlAscend…

ActiveX ComboBox erstellen - befüllen!

Eine ComboBox aus Steuerelemente (ActiveX) soll in der gerade aktiven Zelle erstellt und mit einem Wert bzw. mehreren Werten befüllt werden.

Option Explicit
PublicSub Test()
Dim objXbox AsObject
With Tabelle1 ' Anpassen
Set objXbox =.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
With objXbox
.Object.AddItem ("Teil1")
.PrintObject =False
.Left= ActiveCell.Left
.Top = ActiveCell.Top
.Width = ActiveCell.Width
.Height = ActiveCell.Height
EndWith
EndWith
EndSub
PublicSub Test_1()
Dim objXbox AsObject
Dim varArr AsVariant
varArr =Array("Teil1","Teil2","Teil3","Teil4")
With Tabelle1 ' Anpassen
Set objXbox =.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
With objXbox
'.Object.AddItem ("Teil1")
.Object.List = varArr
.PrintObject =False
.Left= ActiveCell.Left
.Top = ActiveCell.Top
.Width = ActiveCell.Width
.Height = ActiveCell.Height
EndWith
EndWith
EndSub

BuiltinDocumentProperties - Word!

Über eine UserForm in Excel können die "BuiltinDocumentProperties" aus einer Worddatei gelesen bzw. geschrieben werden. In der ZIP-Datei im Download ist eine Testworddatei enthalten.

BuiltinDocumentProperties... [ZIP, 60 KB]

Code gehört in den Codebereich der UserForm:

Option Explicit
Dim objWDD AsObject
Dim objWD AsObject
PrivateSub UserForm_Activate()
TextBox1.Text =_
"OptionButton ""Schreiben..."" oder ""Lesen..."". "&_
vbCrLf &"Dann Worddatei über Button rechts auswählen..."
OptionButton1.Value =True
CommandButton3.Enabled =False
EndSub
PrivateSub UserForm_QueryClose(Cancel AsInteger, CloseMode AsInteger)
If CloseMode =0ThenMsgBox"ESC-Button nutzen!": Cancel =True
EndSub
PrivateSub CommandButton2_Click()
Unload Me
EndSub
PrivateSub CommandButton3_Click()
Call Los
EndSub
PrivateSub CommandButton1_Click()
Dim varFile AsVariant
varFile = Application.GetOpenFilename _
(FileFilter:="Word (*.…