345 Aufrufe
Gefragt in Tabellenkalkulation von peteraus-calw Einsteiger_in (30 Punkte)
Hallo,

habe von hier ein Makro (von Günter) für eine auto_open Abfrage yes/no gefunden, was auch funktioniert.

Bei Abrage ohne Eingabe sollte das Makro nach 10 sek automatisch auf "yes" setzen und starten..

Was müsste man hier einfügen ?

Sub auto_open()
Dim Ereignis
Ereignis = MsgBox("Wollen Sie das Makro ausführen?", vbYesNo + vbQuestion)
If Ereignis = vbYes Then
  Call makro1
Else
Application.Quit
End If
End Sub

Grüße vn Peter

12 Antworten

0 Punkte
Beantwortet von peteraus-calw Einsteiger_in (30 Punkte)
Hallo M.O.,

habe nun nochmal eine neue Datei eingerichtet und mit diesem Makro versucht :

Sub vers()
'
' vers Makro
'

'
    ChDir "Y:\erspi\fhemlog\test"
    Workbooks.Open Filename:="Y:\erspi\fhemlog\test\erspi_test.xlsm"
    Application.Wait (Now + TimeValue("0:00:03"))
    Application.MacroOptions Macro:="PERSONAL.XLSB!vers", Description:="", _
        ShortcutKey:=""
End Sub

In der Datei "erspi_test.xlsm" dann das bekannte Makro :

Private Sub Workbook_Open()

Dim objWSHShell As Object
Dim lngTimeout As Long
Application.Wait (Now + TimeValue("0:00:02"))
'Windows Script Host Objekt erzeugen
Set objWSHShell = CreateObject("WScript.Shell")

'Anzeigedauer in Sekunden festlegen
lngTimeout = 5

Select Case objWSHShell.Popup("Soll das Makro ausgeführt werden?", lngTimeout, "Nachfrage", 36)
  Case vbNo
    'Falls nein gedrückt wird, dann Makro verlassen
    Exit Sub
  End Select

'Falls ja gedrückt wird, oder die Zeit abgelaufen ist, dann makro1 aufrufen
' erspineu Makro

Sheets("Anlagenprotokoll").Select
    
    Range("AH2:AR2").Select
    Selection.Copy
    Dim lngLetztCopye As Long
    Dim wksQ As Worksheet 'Quelle
    Dim wksZ As Worksheet 'Ziel
    Set wksQ = Workbooks("erspi_test.xlsm").Worksheets("Anlagenprotokoll")
    Set wksZ = Workbooks("erspi_test.xlsm").Worksheets("Anlagenprotokoll")
    lngLetzte = IIf(IsEmpty(wksZ.Cells(wksZ.Rows.Count, 1)), wksZ.Cells(wksZ.Rows.Count, 1).End(xlUp).Row, wksZ.Rows.Count)
    wksQ.Range("AH2:AR2").Copy
    wksZ.Cells(lngLetzte + 1, 1).PasteSpecial Paste:=xlValues
    Application.Wait (Now + TimeValue("0:00:02"))
    ThisWorkbook.Save
    
      
Set obWSHShell = Nothing
ActiveWindow.Close

End Sub

und es funktioniert, das ganze starte ich dann mit einer .bat :

TASKKILL /IM excel.exe
timeout 5 /nobreak
start excel.exe Y:\erspi\fhemlog\test\erspi_test.xlsm
timeout 10 /nobreak
TASKKILL /IM excel.exe
exit

tatata alles ok !

Das war nur dank Deiner super Hilfe möglich, besten Dank dafür, wenn ich es kapiere vergebe ich Dir natürlich Punkte.

Ganz liebe Grüße aus dem Nordschwarzwald von Peter
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Peter,

freut mich, dass es jetzt funktioniert.

Gruß

M.O.

P.S. Wegen der Punkte: Einfach auf den Pfeil neben der Null bei einer Antwort drücken.
...