AW: Exel immer im neuen Fenster öffnen mit VBA Script
24.07.2008 14:21:06
Tino
Hallo,
habe Dir mal etwas zusammengestellt.
In DieseArbeitsmappe als Code
Option Explicit
Private Sub Workbook_Open()
Dim sPfad As String
If Workbooks.Count > 1 Then
If MsgBox("Soll diese Datei in einer neuen Instants geöffnet werden?", vbYesNo, "Neue _
Instants?") = vbYes Then
Call ErstelleScrippt
ThisWorkbook.Close False
End If
End If
sPfad = ThisWorkbook.Path
If Right(sPfad, 1) "\" Then sPfad = sPfad & "\"
If Dir$(sPfad & "vbsTemp.vbs", vbNormal) "" Then Kill sPfad & "vbsTemp.vbs"
End Sub
Sub ErstelleScrippt()
Dim F As Integer
Dim sFilename As String, sPfad As String
Dim vbsText As String
sPfad = ThisWorkbook.Path
If Right(sPfad, 1) "\" Then sPfad = sPfad & "\"
sFilename = sPfad & "vbsTemp.vbs"
If Dir$(sFilename, vbNormal) "" Then Kill sFilename
vbsText = "Set wshell = CreateObject(""Wscript.shell"")" & vbCrLf & _
"WScript.Sleep 500" & vbCrLf & _
"wshell.Run (""EXCEL.EXE """"" & ThisWorkbook.FullName & """"""")"
F = FreeFile
Open sFilename For Append As #F
Print #F, vbsText
Close #F
Call ShellExecute(0, "open", sFilename, "", "", 6)
End Sub
In ein Modul als Code.
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Im Test hat es Funktioniert.
Es könnte aber sein, dass diese Datei geöffnet wird bevor die andere geschlossen wurde, dann wäre
die neu geöffnete natürlich schreibgeschützt.
Sollte dies vorkommen, musst du im Script die Pausenzeit höher stellen
"WScript.Sleep 500" = 500 Millisekunde
Gruß Tino
www.VBA-Excel.de