Posts

Es werden Posts vom September, 2010 angezeigt.

Anzahl Zeilen Textdatei(en)!

Manchmal ganz hilfreich: Man(n) möchte die Anzahl Zeilen von Textdateien wissen, bevor man(n) etwas damit anfängt. Mit folgendem Code können über einen Auswahldialog eine oder mehrere Dateien ausgewählt werden. Die Ausgabe erfolgt im Moment im Direktbereich (Im VBA-Editor Ansicht Direktfenster bzw. Strg+G):

Option Explicit
PublicSub Test()
Dim strContent AsString
Dim intCount AsInteger
Dim varFiles AsVariant
Dim objFile AsObject
Dim objFSO AsObject
OnErrorGoTo Fin
varFiles = Application.GetOpenFilename _
(Filefilter:="Textdateien (*.txt), *.*",_
Title:="Bitte Datei(en) auswaehlen",_
MultiSelect:=True)
IfNotVarType(varFiles)= vbBoolean Then
Set objFSO =CreateObject("Scripting.FileSystemObject")
For intCount =Lbound(varFiles)ToUbound(varFiles)
Set objFile = objFSO.OpenTextFile(varFiles(intCount),1)
strContent = objFile.ReadAll
Debug.Print"Datei: "& varFiles(intCount)& vbCrLf &_
objFile.Line&…

Access - Primärschlüssel!

Frage: Wie erstelle ich eine Access-Datenbank mit einer Tabelle und einem Primärschlüssel - am besten noch per "Late Binding" um die eventuell auftretenden Verweisprobleme zu umgehen? So:

Access - Primärschlüssel...[ZIP, 40 KB]

Code:
Option Explicit
' Pfad- und Dateiname anpassen!
Const strFileName AsString="C:\Temp\Test1.mdb"
PublicSub CreateDataBase()
Dim catCatalog AsObject
Dim objTable AsObject
Dim objIndex AsObject
Dim objConn AsObject
OnErrorGoTo Fin
Set objConn =CreateObject("ADODB.Connection")
Set catCatalog =CreateObject("ADOX.Catalog")
catCatalog.Create "Provider=Microsoft.Jet.OLEDB.4.0; "&_
"Data Source="& strFileName
With objConn
.CursorLocation =3' = adUseClient
.Provider ="Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source")= strFileName
.Open
EndWith
Set objIndex =CreateObject("ADOX.Index")
Set objTable =CreateObject("ADOX.Table")
With objTable
.Name="Lieferanten"
.P…

Excel - PowerPoint!

Oft nachgefragt - wie bekomme ich einen Bereich aus Excel nach PowerPoint. Nachfolgend eine Möglichkeit. Die PowerPoint Datei kann wahlweise auf dem Desktop oder im TEMP Ordner gespeichert werden. Abfrage des Bereiches über eine InputBox. Da PowerPoint sich über "WindowState" nicht vernünftig ausblenden lässt, habe ich auf API zurück gegriffen.

Excel PowerPoint...[ZIP, 55 KB]

Code:
Option Explicit
Private Declare Function GetWindowText Lib "user32"_
Alias "GetWindowTextA"(ByVal hwnd AsLong,_
ByVal lpString AsString,ByVal cch AsLong)AsLong
Private Declare Function FindWindow Lib "user32"_
Alias "FindWindowA"(ByVal lpClassName AsString,_
ByVal lpWindowName AsString)AsLong
Private Declare Function ShowWindow Lib "user32"(ByVal_
hwnd AsLong,ByVal nCmdShow AsLong)AsLong
Private Declare Function GetWindow Lib "user32"_
(ByVal hwnd AsLong,ByVal wCmd AsLong)AsLong
Private Declare Function GetTempPath Lib "kernel32" …

Strassenname mit Google Maps!

Wichtig / Important: Neue Version - Google Maps - Strassenname ermitteln...
In einer Tabelle stehen in A1 (folgende) der Firmenname in B1 (folgende) die PLZ und in C1 (folgende) der Ort. Der Strassenname soll ermittelt werden. Hier eine Lösung mit Google Maps. Getestet mit Excel 2003/2010 und Internetexplorer 8.

Google Maps - Strassenname ermitteln... [ZIP, 60 KB]

Option ExplicitPrivate Enum IE_READYSTATE Uninitialised =0 Loading =1 Loaded =2 Interactive =3 Complete =4End Enum Sub Test()Dim wksSheet As Worksheet Dim objResult AsObjectDim objIEApp AsObjectDim strFirma AsStringDim varArr AsVariantDim strPLZ AsStringDim strOrt AsStringOnErrorGoTo Fin Set wksSheet = ThisWorkbook.Worksheets("Tabelle1")' anpassen!!!With wksSheet strFirma =.Cells(1,1).Value strPLZ =.Cells(1,2).Value strOrt =.Cells(1,3).Value EndWithSet objIEApp =CreateObject("InternetExplorer.Application")With objIEApp .Visible =False' …

Internetexplorer - GetObject!

Immer wieder taucht die Frage auf, ob man auf eine laufende Internetexplorerinstanz aufsetzen kann. Man(n) kann das so schreiben "Set objIEApp = GetObject("", "InternetExplorer.Application")" - das bringt keinen Fehler mehr, startet aber bei jedem Aufruf eine neue Instanz - ist also auch keine Lösung. GetObject schaut in der ROT (RunningObjectTable) nach ob sich ein Object dort registriert hat - der IE macht das wohl nicht. Folgender Code bietet eine Alternative:

OptionExplicit'--------------------------------------------------------------------------' Module : Modul1' Procedure : Main' Author : Case (Ralf Stolzenburg)' Date : 12.09.2010' Purpose : Internetexplorer bestehende Instanz - oder neu starten...'--------------------------------------------------------------------------PublicSubTest()DimobjWindowAsObjectDimobjIEAppAsObjectDimobjShellAsObjectDimobjItemAsObjectOnErrorGoToFinSetobjShell=CreateObject("Shel…