Menü
An- und Abmelden
Partner / Links
|
Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.
Nachrichten - Kyriakos
Seiten: [1]
1
« am: Juli 25, 2017, 15:56:05 Nachmittag »
Hallo,
ich brauche Hilfe.
Ich suche nach einer Möglichkeit in Excel 2010 per VBA eine benutzerdefinierte Registerkarte im Menüband auszublenden bzw. anzuzeigen.
Bis jetzt habe ich in google Lösungen gefunden, wie man mit "Ribbon" das komplette Menüband ausblendet und anzeigt.
Gibt es eine Möglichkeit auch nur eine bestimmte Registerkarte im Menüband auszublenden? Aso sprich die AKtion, die man über die Option "Menüband anpassen" und dann per Häkchen eine Registerkarte ausblenden bzw. anzeigen lassen (so wie wenn man die "Entwickler Toos" zum Beispiel anzeigt).
Ist das per VBA möglich?
Bitte wenn möglich keine externe Add-Ins. Von diesem Custom UI habe ich auch gehört aber das ist leider nicht der Lösungsansatz, den ich brauche.
vielen Dank.
Mfg Kiri
2
« am: November 04, 2016, 15:04:02 Nachmittag »
Hallo Nils, vielleicht ist das Problem an der Formatierung. Öffne die Tabellen über den Text-Import Assistent in Excel und formatiere gleich die Spalte mit den Kommastellen als Zahl mit der gewünschten Anzahl an Kommastellen und schau ob das Problem wieder kommt. CSV speichert übrigens keine Formatierungen.
3
« am: November 04, 2016, 14:54:59 Nachmittag »
Hallo maninweb und danke für die Antwort.
eine Function wäre also meine Lösung.
Ich habe auch den Link zum CreateObject IE angeschaut.
Das war ursprünglich meine erstes Makro, aber dort wird ja jedes mal ein neues IE fenster erzeugt.
Ich möchte aber erst prüfen ob IE offen ist und ob der gewünschte Link auch in irgendein IE Fenster geöffnet ist und dann ggf. ein neues Fenster kreiieren. Wenn aber die gewünschte Seite schon geöffnet ist, soll er einfach das bereits geöffnete Fenster ansprechen.
Ich muss auch sagen ich stehe schon vor einem unbekannten Problem. Wollte nach einiger Zeit mein Makro wieder testen aber es tut sich nichts. Hab aus Neugier noch "debug.print oWin.Name" in die For-Schleife eingegeben und da wird nix angezeigt. Wenn ich "Debug.Print oWin.DocumentURL" eingeben kommt im Direktfenster "Posteingang:Outlook". Woran liegt es jetzt, dass VBA sich irgendwas mit Outlook tut obwohl die If-Anweisung ganz klar heißt "If owin.name = Internet Explorer Then..."
PS: Habe noch "Microsoft Internet Controls" in den Optionen aktiviert. Habs zufälligerweise in Internet gefunden. Kann es daran liegen?
LG
4
« am: September 29, 2016, 10:08:48 Vormittag »
Hallo,
ich arbeite an einem code um per excel vba den IE11 zu öffnen und darin zu arbeiten.
Mit CreateObject("Shell.Application") prüfe ich ob in den shell windows ein IE Fenster geöffnet ist und ob die URL stimmt. Dafür verwende ich zwei object Variable, oShell und oWin.
Lasse beide in eine Schleife prüfen "For each oWin in oShell.Windows". Beim Fund steigt die For aus.
Das klappt auch. ganz gut. Dieses Makro ist nun für das Einloggen in der Webseite gedacht (Das Einloggen funktioniert auch).
Im nächsten Makro, soll man die Webseite nun bedienen. Jetzt ist hier die Sache dass ich wieder ein Shell Object brauchte und ich die Prüfung "For each..." erneut machen muss. Meine Frage also, ich möchte dass Excel sich dieses Object "oWin" aus dem Makro1 merkt solange die Arbeitsmappe geöffnet ist und dass diese Variable auch in anderen Makros erkannt wird (ohne dass man immer wieder createobject und die for each Schleife durchspielen muss).
Ist das irgendwie möglich und wenn ja wie?
Hier ist das Makro1 als Beispiel (das oshell und owin habe ich oben im Modul als object deklariert, auch die URL-Strings)
Sub GetIE()
Set oShell = CreateObject("Shell.Application")
For Each oWin In oShell.Windows If oWin.Name = "Internet Explorer" And InStr(1, oWin.LocationURL, MeinURL) > 0 Then 'Dieses Fenster was hier gefunden wird, soll für alle Makros als Variable deklariert werden wenn möglich oWin.document.GetElementByID("username").Value = "Benutzername" oWin.document.GetElementByID("password").Value = "Passwort" oWin.document.GetElementByID("alias").Value = "Organisation" oWin.document.all("submit").Click Exit For End If Next oWin
Set oShell = Nothing
End Sub Vielen Dank und Mfg Kiri
5
« am: April 12, 2016, 12:01:40 Nachmittag »
Hallo,
ich nutze Outlook 2010 und habe ein Outlook.com konto eingerichtet.
Ich habe auch einpaar Kontakte und diese werden im Adressbuch mehrmals angezeigt.
Outlook macht hier mehrere Einträge des Kontakts wenn ich e-mail Adresse und Telefonnummer bzw. Faxnummer eingebe
Dann steht der Kontakt zweimal da, einmal mit e-mail und einmal mit Fax-nummer.
Ich weiß nicht warum Outlook da eine Trennung macht. Ich möchte das gerne in einem Eintrag anzeigen also mit mehrere Spalten (Nach e-mail kommt tel, dann Fax).
Auf meiner Arbeit ist es so aber zu Hause nicht. Hat es was mit der globalen Adressliste zutun?
Danke
LG Kiri
6
« am: März 22, 2016, 15:45:29 Nachmittag »
Alsi,
einer meiner Standard-Sätze: "Wer schützt mich vor den Datenschützern". Aber das, was du hier alles protokollieren willst, ist schon (fast) unanständig! Ganz zu schweigen von der rechtlichen Seite.
In Sachen "Timestamp" gibt es reichlich Links bei Mr. Goo zu finden. Einen Verweis auf meinen Blog verkneife ich mir aus den oben genannten Gründen.
Ich verstehe warum das unanständig sein soll? Ich möchte protokollieren, damit bei Fehlern ich dann weiß was der User gemacht hat und ggf. die Aktionen zurückverfolgen und den Fehler beseitigen. Die Makros sind miteinander verkettet, daher ist es wichtig, wenn der User die in richtiger Reihenfolge ausführt, das ich ihm auch das beibringen kann. Diese Mappe, die ich erstelle ist nur für Team-interne Zwecke und die User werden ja darüber informiert. Außerdem ist deine Antwort total off Topic, da es hier nicht um menschliche Rechte und Datenschutz geht. Ich kenne ja meine Kollege und deren Usernames in Windows, also wo siehst du da ein Datenschutzproblem? Dass da der Username erscheint? LG Kiri
7
« am: März 22, 2016, 09:37:49 Vormittag »
Hallo,
wie der Titel sagt, ich möchte für meine Mappe ein Protokoll führen auf ein Tabellenblatt. Bin leider ein VBA-Anfänger.
Ich möchte aber nicht jede Aktion oder Zellenveränderung protokollieren, sondern nur bestimmte Aktionen
Um etwas Erleuchtung rein zu bringen: Ich habe eine Mappe, im ersten Blatt habe ich command Buttons eingebaut, die verschiedene Makros ausführen.
Ich möchte nun, wenn ein User ein Button klickt, dass das protokolliert wird und zwar mit Angabe des Usernamen des angemeldeten Windows-Users, Datum und Uhrzeit (hh:mm)
Folgende Schritte sollen protokolliert werden (werden in Tabelle5 protokolliert) - User benutzt ein ActiveX Element (z.b. klickt auf ein command button) - Makro (mit Makroname) wurde ausgeführt - (oben-genanntes) Makro wurde erfolgreich ausgeführt bzw. Makro wurde abgebrochen bzw. Makro konnte aufgrund eines Fehlers nicht ausgeführt werden. (Bei Fehler wäre die Fehlerbeschreibung und Fehlercode ebenfalls hilfreich) - Tabellenblatt wurde gelöscht / hinzugefügt / verschoben /umbenannt (mit Blattnamen) - Mappe geöffnet / gespeichert / geschlossen
Das wars erstmal. Vielen Dank im Voraus für die Hilfe.
LG Kiri
8
« am: Februar 25, 2016, 12:51:46 Nachmittag »
Hallo,
ich habe folgendes Makro erstellt, wo eine Excel Mappe mit GetObject geöffnet wird und ein Formeln (worksheetfunctions) laufen.
Sub ZusatzdatenTestfile() 'Fügt die folgenden Daten aus der neuesten GSPR-Tabelle ein: Lfd-Nr., Auftragsnummer, TID, MT Belegnummer (Nur Zugverkauf)
Dim Datei As String Dim Zeile As Long Dim ZeileMax As Long
ZeileMax = Tabelle2.UsedRange.Rows.Count Datei = "C:\Testfiles\Tesfile1.xlsx"
GetObject (Datei)
With Tabelle2 For Zeile = 2 To ZeileMax On Error Resume Next If .Cells(Zeile, 9) = "" Then .Cells(Zeile, 9) = Application.WorksheetFunction.Index(Workbooks(Datei).Worksheets(1).Range("A:A"), _ Application.WorksheetFunction.Match(Cells(Zeile, 1), Workbooks(Datei).Sheets(1).Range("C:C"), 0)) End If If .Cells(Zeile, 10) = "" Then .Cells(Zeile, 10) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _ Workbooks(Datei).Worksheets(1).Range("C:P"), 12, False) End If If .Cells(Zeile, 11) = "" Then .Cells(Zeile, 11) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _ Workbooks(Datei).Worksheets(1).Range("C:P"), 11, False) End If If .Cells(Zeile, 4) = "00858357" Then If .Cells(Zeile, 12) = "" Then .Cells(Zeile, 12) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _ Workbooks(Datei).Worksheets(1).Range("C:P"), 13, False) End If End If Next Zeile End With Workbooks(Datei).Close (False)
End Sub
Das Problem ist, manhcmal wird die erste Funktion (index und match) nicht berechnet, obwohl es passende Treffer gibt.
Ich habe den Eindruck, dass Excel schon mit der Berechnung anfängt, bevor noch die Datei geöffnet wurde. Manchmal öffnet sich die Datei schnell und die Berechnung findet statt. Ich habe das mehrmals mit den selben Dateien getestet.
Kann man das irgendwie fixen? Mit application.wait komme ich nicht weiter (bringt nichts).
Die Datei die mit GetObject geöffnet wird, ist nun 12 MB groß, es ist eine große Datenbank halt.
Kommischerweise, ist es immer die erste Berechnet die nicht statt findet. Die nächsten danach mit VLookUp funktionieren einwandfrei.
Mit Workbooks.Open ist dasselbe Problem und noch schlimmer, da findet NIE die Berechnung statt.
Danke für die Hilfe.
Lg
Seiten: [1]
|