Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBAProject immer 1. Project selektieren

VBAProject immer 1. Project selektieren
30.03.2017 11:35:03
walter mb

Guten Morgen,
wenn ich per Makro den VB öffne, soll immer das 1. Object
angezeigt werden.
mfg
walter mb

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
hier verständlicher
30.03.2017 12:46:31
walter mb
Hallo,
hier etwas verständlicher:
vba entwicklungsumgebung Projekt­Explorer aktive Datei auswählen !
Hatte dieses Makro in Google gefunden:
Private Sub VB_setzen_Neue_Datei()
'Workbooks.Open (strPfadAktuell & strDateiNameAktuell)
Set oWBExtern = ActiveWorkbook                                    'GetObject(strPfadAktuell &  _
strDateiNameAktuell)
'''oWBExtern.Activate
'''Application.ScreenUpdating = True
If oWBExtern.VBProject.Protection = 0 Then
SendKeys ("%{F11}"), True                        ' Visual Basic Editor öffnen
For iZaehlerSchleifeUnprotect = 1 To 2  ' raus 30.03. stand auf 2 BEGINN, Schleife  _
erforderlich,
' da Projekt 2x im Projekt-Explorer auftritt (!? _
)
SendKeys ("^r"), True               ' in den Projekt-Explorer wechseln
SendKeys ("A"), True               ' Zum Projekt beginnend mit "c" springen
'SendKeys ("{ENTER}" & "Passwort" & "{ENTER}"), True            ' ENTER=Projekt öffnen->  _
Passwortfenster öffnet, Passwort übergeben, bestätigen mit ENTER
'SendKeys ("{ENTER}" & "ww" & "{ENTER}"), True            ' ENTER=Projekt öffnen->  _
Passwortfenster öffnet, Passwort übergeben, bestätigen mit ENTER
Next iZaehlerSchleifeUnprotect          ' ENDE, Schleife erforderlich,
'da Projekt 2x im Projekt-Explorer auftritt      _
' Nachdem in "beide" Projekte das Passwort eingegeben wurde ...
'''''SendKeys ("%xi" & "^{TAB}" & "{TAB}" & "%a" & "%k" & "{DEL}" & "%s" & "{DEL}" & "{TAB}" & " _
{ENTER}"), True ' Erklärung s. Folgezeilen
SendKeys ("%xi" & "^{TAB}" & "{TAB}" & "%a" & "%k" & "%s" & "{TAB}" & "{ENTER}"), True ' Erklä _
rung s. Folgezeilen
' %xi    = wechslen zu Projekteigenschaften
' ^{TAB} = wechslen zu Projekteigenschaften, Schutz
' %a     = wechseln zu "Projekt für Anzeige sperren", Häkchen wird geändert
' %k     = wechseln in Passwortfeld 1
' {DEL}  = Passwortfeld1 löschen
' %s     = wechseln in Passwortfeld 2
' {DEL}  = Passwortfeld2 löschen
' {TAB}  = Springen zum OK-Buttonww
' {ENTER}= Bestätigen OK-Button
'''''  SendKeys ("%{F4}"), True
' Visual Basic Editor schließen
End If
End Sub
gruß
walter mb
Anzeige
Verständlicher?
30.03.2017 13:47:28
RPP63
Moin!
Was ist das 1. Object?
Der Projektexplorer kennt verschiedene Sortierreihenfolgen.
Dazu kommt noch, dass DieseArbeitsmappe - TabelleX im englischen SheetX - ThisWorkbook ist.
???
Gruß Ralf
AW: Verständlicher?
30.03.2017 14:01:05
walter mb
Hallo Ralf,
ich meine die aktuelle aktive Datei. !
mfg
walter mb
AW: Verständlicher?
30.03.2017 14:15:34
walter mb
Hallo Ralf,
ich meine die aktuelle aktive Datei. !
mfg
walter mb
Hier ein Beispiel aber
30.03.2017 14:28:39
walter mb
Hallo Ralf,
hier ein Beispiel ich glaube von Luschi, wenn ich wüsste wie man das Makro weiter ausführen
kann, das würde mein Bedarf decken.
Public Sub VB_setzen_Neue_Datei()
Dim Password As String
Dim vbext_pp_none
Dim wb As Workbook, ok As Boolean, s As String
Set wb = ThisWorkbook   'Application.Workbooks(akw)
Password = "ww"
SendKeys "%{F11}^r{Tab}", True
'Do While Application.VBE.ActiveVBProject.Filename <> wb.FullName
'    Debug.Print "***" & " - " & Application.VBE.ActiveVBProject.Filename
'    SendKeys "{Tab}", True
'Loop
Debug.Print ":::" & " - " & Application.VBE.ActiveVBProject.Filename
'If wb.VBProject.Protection = vbext_pp_none Then
'Dieser Stop-Befehl ist erforderlich, damit der Focus im Vba-Editor auch auf dam
'richtigen Projekt steht!!!
Stop                   'hier hält der Debugger an und mit 'Fortsetzen' weiter
' MsgBox "jetzt F5 drücken"
If wb.VBProject.Protection = 0 Then
'nur ein einziger SendKeys-Befehl
SendKeys "%xi{TAB 9}{RIGHT}{TAB} {TAB}" & Password & "{TAB}" & _
Password & "{TAB}{Enter}%{F11}", False   'True
End If
Set wb = Nothing
End Sub
mfg
walter mb
Anzeige
Der wievielte Thread ist das zu diesem Thema?
30.03.2017 16:00:20
EtoPHG
Walter?
Vergiss dieses Vorhaben ganz einfach.
Suche eine Standardlösung auf Basis eine XL-Templates!
Gruess Hansueli
Hallo Hansueli
30.03.2017 17:40:59
walter mb
Hallo Hansueli,
und wie geht das ?
Eigentlich läuft das letzte Makro einwandfrei bis STOP,
wenn ich dann mit strg+f5 das Makro aktiviere perfekt.
Gibt es den keine Lösung wie man den STOP nur Sekundenmäßig
aktivieren kann und es dann weiter geht ?
mfg
walter mb
AW: Hallo Hansueli
31.03.2017 08:03:29
EtoPHG
Hallo Walter,
Es macht einfach wenig Sinn ein VB-Passwort via VBA zu setzen. Das stellt doch das ganze Passwort-Konzept in Frage. Wenn du ein Template mit eine bereits geschützten VB-Projekt zur Erstellung einer neuen Arbeitsmappe beiziehst, dann erübrigt sich doch jeder Versuch zu so einer Krücke. Code den du im Internet findest, mag zu auf spezielle (einmalige) Anwendungen funktionieren, aber ist zu 99.9% nicht generisch (für alle möglichen Fälle) zu gebrauchen.
Gruess Hansueli
Anzeige
Danke für die Info Hansueli... aber
31.03.2017 13:21:31
walter mb
Hallo Hansueli,
danke nochmals für die Info.
Ich wollte meinem Kollegen bei dem STOP das ALT+F11 und dann ALT + F5 für das
weitere Makro ausführen ersparen.
Wenn es den dafür keine Lösung gibt, schade.
Kannst Du mir ein Beispiel mit Template geben ?
Hier mein Speicher Makro:
Dim TBName$, WBName$
Dim tan
'ActiveSheet.OLEObjects("CommandButton4").Enabled = True
'------------------------------------------------
'tan = ActiveSheet.Name
tan = ActiveSheet.Range("D10")
TBName = InputBox("Blattname = Vorname Nachname" & vbCr & vbCr & "Namen ändern, bitte beachten:" _
& vbCr & "Vorname LEERZEICHEN Nachname eingeben !", "Datei-Namen erstellen", tan)
If TBName = "" Then
MsgBox " Sie haben auf ABBRECHEN gedrückt..." & vbCr & vbCr & "Es wird keine Datei erstellt !", 0, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
ActiveSheet.Range("D10") = TBName
TBName = ActiveSheet.Name
' WBName = InputBox("Mit diesem Sheet-Namen wird die Sheet als Datei abgespeichert ", _
"Dateinamen erstellen", TBName & " 01_fina_05-2014_PES_Consultant") & ".xlsm"
WBName = InputBox("Mit diesem Sheet-Namen wird die Sheet als Datei abgespeichert", _
"Dateinamen erstellen", TBName & " 01_fina_05-2014_PES_Consultant" & ".xlsm")
If StrPtr(WBName) = 0 Then
MsgBox " Sie haben auf ABBRECHEN gedrückt..." & vbCr & vbCr & "Es wird keine Datei erstellt !", 0, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Else
Worksheets(TBName).Copy
Dim DateiNam As String
DateiNam = WBName
'----------- erst Button ausblenden -------------
'ActiveSheet.Shapes("CommandButton1").Delete
'ActiveSheet.OLEObjects("CommandButton1").Enabled = False
ActiveSheet.OLEObjects("CommandButton2").Enabled = False
ActiveSheet.OLEObjects("CommandButton3").Enabled = False
'ActiveSheet.OLEObjects("CommandButton4").Enabled = False
ActiveSheet.OLEObjects("CommandButton5").Enabled = False
'ActiveSheet.OLEObjects("CommandButton6").Enabled = False ' 9weitere Tabellen erstellen
ActiveSheet.OLEObjects("CommandButton7").Enabled = False
ActiveSheet.OLEObjects("CommandButton8").Enabled = False
'ActiveSheet.OLEObjects("CommandButton9").Enabled = False
ActiveWindow.ScrollRow = 1 '1 Zeile
ActiveWindow.ScrollColumn = 1 '1 Spalte
ActiveSheet.Range("D10").Select
gruß
walter mb
Anzeige
Wieso soll ich dir ein Template liefern?
31.03.2017 13:27:43
EtoPHG
Hallo Walter,
Nur du weisst, wie deine neue Arbeitsmappe aussehen soll und was sie enthalten soll.
Es gehört zu den Basiskenntnissen von Excel eine Arbeitsmappe als Template abzuspeichern, um sie als Vorlage für Neue zu verwenden!
Gruess Hansueli
Verstanden gemacht aber...
31.03.2017 17:33:48
walter mb
Hallo Hansueli,
habe als Template (Vorlage) Musterwb.xltm
gespeichert.
Nun habe ich daraus mein Makro, siehe letzte Mai, eine Datei erstellt,
leider wurde das Passwort von der Orginal nicht übernommen.
Was habe ich den verkehrt gemacht ?
gruß
walter mb
Ich habe Idee, bitte helfen !!!
31.03.2017 17:53:05
walter mb
Hallo,
ich hab die aktuelle Datei als XLSM gespeichert !
Makros sind ja drin.
Mit diesem Makro:
Sub Nur_Blatt_Speichern()
Dim TBName$, WBName$
Dim tan
'ActiveSheet.OLEObjects("CommandButton4").Enabled = True
'------------------------------------------------
'tan = ActiveSheet.Name
tan = ActiveSheet.Range("D10")
TBName = InputBox("Blattname = Vorname Nachname" & vbCr & vbCr & "Namen ändern, bitte beachten:" _
& vbCr & "Vorname LEERZEICHEN Nachname eingeben !", "Datei-Namen erstellen", tan)
If TBName = "" Then
MsgBox " Sie haben auf ABBRECHEN gedrückt..." & vbCr & vbCr & "Es wird keine Datei erstellt !", 0, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
ActiveSheet.Range("D10") = TBName
TBName = ActiveSheet.Name
' WBName = InputBox("Mit diesem Sheet-Namen wird die Sheet als Datei abgespeichert ", _
"Dateinamen erstellen", TBName & " 01_fina_05-2014_PES_Consultant") & ".xlsm"
WBName = InputBox("Mit diesem Sheet-Namen wird die Sheet als Datei abgespeichert", _
"Dateinamen erstellen", TBName & " 01_fina_05-2014_PES_Consultant" & ".xlsm")
If StrPtr(WBName) = 0 Then
MsgBox " Sie haben auf ABBRECHEN gedrückt..." & vbCr & vbCr & "Es wird keine Datei erstellt !", 0, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Else
'Worksheets(TBName).Copy
Dim DateiNam As String
DateiNam = WBName
'----------- erst Button ausblenden -------------
'ActiveSheet.Shapes("CommandButton1").Delete
'ActiveSheet.OLEObjects("CommandButton1").Enabled = False
ActiveSheet.OLEObjects("CommandButton2").Enabled = False
ActiveSheet.OLEObjects("CommandButton3").Enabled = False
'ActiveSheet.OLEObjects("CommandButton4").Enabled = False
ActiveSheet.OLEObjects("CommandButton5").Enabled = False
'ActiveSheet.OLEObjects("CommandButton6").Enabled = False ' 9weitere Tabellen erstellen
ActiveSheet.OLEObjects("CommandButton7").Enabled = False
ActiveSheet.OLEObjects("CommandButton8").Enabled = False
'ActiveSheet.OLEObjects("CommandButton9").Enabled = False
ActiveWindow.ScrollRow = 1 '1 Zeile
ActiveWindow.ScrollColumn = 1 '1 Spalte
ActiveSheet.Range("D10").Select
ActiveWorkbook.SaveAs WBName, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
jetzt würde ich die restlichen Sheets allee löschen und das nur der angeklickte, ausgewählte
Name der Sheet drin bleibt.
Somit bleibt natürlich auch das Passwort drin !
Bitte, wie kann man die restlicheen Sheets per Makro löschen ?
gruß
walter mb
Anzeige
Ich hab geschafffffft ..... -)
31.03.2017 20:51:04
walter mb
Hallo Hansueli und die anderen...
DANKE für die Geduld !
Ich habs so gemacht, wie Du Hansueli es vorgeschlagen hast !
Anbei mein Makro, ich speichere also die aktuelle Datei von xltm auf xlsm ab.
Dann werde ich die Sheet die ich brauche, mit Namen an erster Stelle setzen und
die restlichen Sheets werden ohne Abfrage gelöscht.
So sind meine Makros beim wieder öffnen der Datei geschützt.
Hier mein geändertes Makro:
''' Worksheets(TBName).Copy
Dim DateiNam As String
DateiNam = WBName
'----------- erst Button ausblenden -------------
'ActiveSheet.Shapes("CommandButton1").Delete
'ActiveSheet.OLEObjects("CommandButton1").Enabled = False
ActiveSheet.OLEObjects("CommandButton2").Enabled = False
ActiveSheet.OLEObjects("CommandButton3").Enabled = False
'ActiveSheet.OLEObjects("CommandButton4").Enabled = False
ActiveSheet.OLEObjects("CommandButton5").Enabled = False
'ActiveSheet.OLEObjects("CommandButton6").Enabled = False ' 9weitere Tabellen erstellen
ActiveSheet.OLEObjects("CommandButton7").Enabled = False
ActiveSheet.OLEObjects("CommandButton8").Enabled = False
'ActiveSheet.OLEObjects("CommandButton9").Enabled = False
ActiveWindow.ScrollRow = 1 '1 Zeile
ActiveWindow.ScrollColumn = 1 '1 Spalte
ActiveSheet.Range("D10").Select
ActiveSheet.Move Before:=Sheets(1) 'vor die erste sheet
ActiveWorkbook.SaveAs WBName, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = False 'hiermit Warnfester ausgeschaltet
While Worksheets.Count > 1
Worksheets(2).Delete
Wend
Application.DisplayAlerts = True 'Warnfenster eingeschaltet
Schönes Wochenende !
mfg
walter mb
Anzeige
na dann aus offen raus - oT
01.04.2017 18:45:08
robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige