Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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

VBS und Excel AddIns

VBS und Excel AddIns
12.03.2021 14:41:03
Daniel
Hallo zusammen,
ich möchte eine Excel Datei automatisch öffnen, eine Zeit offen haben speichern und schließen. Das habe ich mir so aus einigen Beiträgen hier gebaut und es geht auch:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\zwdebeli\Desktop\Test.xlsx")
objExcel.Visible = True
'erzwingt die Aktualisierung der externen Daten
'ohne dumme Rückfrage
objWorkbook.RefreshAll
'legt den Script schlafen, bis aktualisiert ist > Anpassen!
'in Tausendstel-Sekunden, hier also 30 Sekunden
wscript.sleep 30000
'speichert die XLS
objWorkbook.save
'vorsichtshalber nochmals kurzes Abwarten des Speicherns
wscript.sleep 10000
'schliesst Excel
objExcel.Quit

Mein Problem ist jetzt, das sich die Liste eigentlich aktualisiert, wenn ich Sie manuell öffne. Und zwar über das SAP Analysis AddIn. Wenn ich das VBS ausführe, sehe ich aber die AddIns nicht und die Liste aktualisiert sich dementsprechend nicht. Wie können die bzw. das AddIn mit gestartet werden, wenn ich es per VBS mache?
VG
Daniel

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBS und Excel AddIns
12.03.2021 14:57:20
Nepumuk
Hallo Daniel,
ich habe mal was geschrieben welche Addins nachlädt. Ist aber VBA-Code den du noch anpassen musst.
Public Sub test()
    Dim objApplication As Object, objAddin As Object
    Set objApplication = CreateObject(Class:="Excel.Application")
    objApplication.DisplayAlerts = False
    For Each objAddin In objApplication.AddIns
        If objAddin.Installed Then
            objApplication.AddIns(objAddin.Title).Installed = False
            objApplication.AddIns(objAddin.Title).Installed = True
        End If
    Next
    objApplication.DisplayAlerts = True
    objApplication.Workbooks.Add xlWBATWorksheet
    objApplication.Visible = True
    Set objApplication = Nothing
    Set objAddin = Nothing
End Sub

Gruß
Nepumuk

Anzeige
AW: VBS und Excel AddIns
12.03.2021 15:53:39
Daniel
Vielen Dank.
Entschuldige die Frage aber was meinst Du mit anpassen? Muss ich das in meins einfügen? Sorry aber bin totaler Anfänger bei sowas.

AW: VBS und Excel AddIns
12.03.2021 16:01:16
Nepumuk
Hallo Daniel,
noch eine Frage, ist dein AddIn ein Excel- oder ein COM-AddIn?
für Excel-AddIn so:
Set objExcel = CreateObject("Excel.Application")

objExcel.DisplayAlerts = False
For Each objAddin In objExcel.AddIns
    If objAddin.Installed Then
        objExcel.AddIns(objAddin.Title).Installed = False
        objExcel.AddIns(objAddin.Title).Installed = True
    End If
Next
objExcel.DisplayAlerts = True

Set objWorkbook = objExcel.Workbooks.Open("C:\Users\zwdebeli\Desktop\Test.xlsx")

objExcel.Visible = True

.
.
.

Gruß
Nepumuk

Anzeige
AW: VBS und Excel AddIns
12.03.2021 15:55:36
Daniel
Oder anders gefragt: Ich kann die Excel ja per Aufgabenplaner öffnen lassen, dann aktualisieren auch alle Datenquellen. Dann müsste ich sie ledlich per Script speicher und beenden. Das müsste doch einfacher gehen, oder?

AW: VBS und Excel AddIns
12.03.2021 16:02:23
Nepumuk
Hallo Daniel,
kann ich nicht sagen, das habe ich noch nie gemacht.
Gruß
Nepumuk

VBS und Excel AddIns
12.03.2021 17:08:24
Anton
Hallo Daniel,
probier's hiermit:

Set objExcel = CreateObject("Excel.Application")  
objExcel.Visible = True
For Each oAddin In objExcel.AddIns  
  If InStr(1, UCase(oAddin.Name), "SAP") <> 0 Then    
   'SAP Addin laden
    objExcel.Workbooks.Open oAddin.FullName
  End If  
Next
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\zwdebeli\Desktop\Test.xlsx")  
'erzwingt die Aktualisierung der externen Daten
'ohne dumme Rückfrage
objWorkbook.RefreshAll
'legt den Script schlafen, bis aktualisiert ist > Anpassen!
'in Tausendstel-Sekunden, hier also 30 Sekunden
wscript.sleep 30000
'speichert die XLS
objWorkbook.Save
'vorsichtshalber nochmals kurzes Abwarten des Speicherns
wscript.sleep 10000
'schliesst Excel
objExcel.Quit

mfg Anton

Anzeige
AW: VBS und Excel AddIns
15.03.2021 14:51:08
Anton
Hallo Daniel,
hast du diese Variante des VBS ausprobiert?
mfg Anton

AW: VBS und Excel AddIns
15.03.2021 14:59:07
Daniel
Hallo Anton, ja habe ich. Es werden keine AddIns geladen.
VG
Daniel

AW: VBS und Excel AddIns
15.03.2021 16:26:39
Anton
Hallo Daniel,
noch ein Versuch:

Set objExcel = CreateObject("Excel.Application")  
objExcel.Visible = True
For Each oAddin In objExcel.COMAddIns  
  If InStr(1, UCase(oAddin.Description), "ANALYSIS") <> 0 Then    
   'https://codedocu.de/Office-365/Excel/AfO-SAP-Analysis/Excel-AfO-automatisch-an-und-ausschalten?2751
   'SAP Addin laden
    oAddin.Connect = True
  End If  
Next
Set objWorkbook = objExcel.Workbooks.Open("C:\Users\zwdebeli\Desktop\Test.xlsx")  
'erzwingt die Aktualisierung der externen Daten
'ohne dumme Rückfrage
objWorkbook.RefreshAll
'legt den Script schlafen, bis aktualisiert ist > Anpassen!
'in Tausendstel-Sekunden, hier also 30 Sekunden
wscript.sleep 30000
'speichert die XLS
objWorkbook.Save
'vorsichtshalber nochmals kurzes Abwarten des Speicherns
wscript.sleep 10000
'schliesst Excel
objExcel.Quit

mfg Anton

Anzeige
AW: VBS und Excel AddIns
16.03.2021 08:51:53
Daniel
Leider Nein, selbe Bild. Geht auf, speichert und geht zu aber ohne die AddIns.
VG
Daniel

AW: VBS und Excel AddIns
17.03.2021 16:00:07
Anton
Hallo Daniel,
kannst du die Ausgabe im Direktfenster (Strg+G) des VBEditors von Excel hier posten?

Sub b()
  Dim exadd As AddIn, comadd As COMAddIn  
  Debug.Print "Excel Addins:"
  For Each exadd In Application.AddIns  
    Debug.Print exadd.IsOpen & vbTab & exadd.Title  
  Next
  Debug.Print "COM Addins:"
  For Each comadd In Application.COMAddIns  
    Debug.Print comadd.Connect & vbTab & comadd.Description
  Next
End Sub

mfg Anton

Anzeige
AW: VBS und Excel AddIns
15.03.2021 12:37:00
Daniel
Hallo, ich habe es mit VBA probiert:
Modul:
Public Const ciIntervall As Integer = 1
Public Const dsMacro As String = "AutoClose"
Public gdNextTime As Double
Private iWait As Integer
Const cMax = 10 ' -> 10 Sekunden
Dim Zeit As Date
Sub AutoClose()
iWait = iWait + 1
If cMax - iWait > 0 Then
Application.StatusBar = Format(Zeit - TimeSerial(0, 0, iWait), "hh:mm:ss")
gdNextTime = Now + TimeSerial(0, 0, ciIntervall)
Application.OnTime gdNextTime, dsMacro
Else
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub Sub AutoCloseStart()
iWait = 0
Zeit = TimeSerial(0, 0, cMax)
Application.StatusBar = Zeit
Call AutoClose
End Sub Sub AutoCloseStop()
On Error Resume Next
Application.StatusBar = ""
Application.OnTime earliesttime:=gdNextTime, _
procedure:=dsMacro, schedule:=False
End Sub

Diese Arbeitsmappe:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Call AutoCloseStop
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
AutoCloseStop
AutoCloseStart
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
AutoCloseStop
AutoCloseStart
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub

Auf dem Desktop super geklappt. Habe es dann auf ein Networkshare verschoben, diesen Pfad als vertrauenswürdig hinterlegt damit das Makro auch nicht deaktiviert wird. Datei öffnet, speichert nach der genannten Zeit, will aber DANN nochmal speichern und bleibt in dem Speicher Dialog hängen. Woran kann das liegen?
VG
Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige