Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS - in vorhandenes Workbook schreiben?

Frage Entwicklung VB for Applications

Mitglied: unkwownuser

unkwownuser (Level 1) - Jetzt verbinden

28.10.2009 um 09:46 Uhr, 5121 Aufrufe, 12 Kommentare

Hallo liebes administrator.de Forum,

ich habe eine technische Frage, ob mein Vorhaben so funktioniert und wie man es am besten realisiert
Es geht darum, dass wenn Excel bereit geöffnet ist, das VBScript in die vorhande Mappe schreibt, andernfalls soll Excel über das Script gestartet werden.


Gruß,
unkwownuser
Mitglied: H41mSh1C0R
28.10.2009 um 10:32 Uhr
Hi,

Ja das geht. =)

Mehr bekomm ich aus meiner Glaskugel nicht an Information. ^^

Realisierung:

Stichwort: ActiveWindow

Für den Fall das Excel nicht offen ist.

01.
Set oExcel = CreateObject("Excel.Application") 
02.
oExcel.visible = true 
03.
Set oWbk = oExcel.Workbooks.Open (fname, false, true)
Das passende Excelfile eintragen --> *freu*

Gruß
Bitte warten ..
Mitglied: 76109
28.10.2009 um 13:02 Uhr
Hallo unkwownuser!

Ja, das ist technisch möglich, aber nicht unbedingt sinnvoll, da ja mehrere Arbeitsmappen geöffnet sein können.....

In diesem Beispiel, wird mit Hilfe der Shell-Funktion ein Excel-Fenster aktiviert, sofern Excel geöffnet ist. Der Shell-Rückgabewert Result gibt an: Excel geöffnet True/False

01.
Dim Shell, Result 
02.
 
03.
Set Shell = WScript.CreateObject("WScript.Shell") 
04.
 
05.
Result = Shell.AppActivate("Microsoft Excel") 
06.
 
07.
If Result = True Then 
08.
    MsgBox "Excel ist geöffnet"   
09.
Else 
10.
    MsgBox "Excel ist nicht geöffnet"  
11.
End if
Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
28.10.2009 um 13:21 Uhr
Hallo Dieter, hallo H41mSh1C0R,

zu H41mSh1C0R:
Den Code, falls Excel nicht geöffnet ist, habe ich schon. Mir geht es nur darum, wie ich das realisiere.
zu Dieter:
Ich stelle mir das anders vor. Das Script überprüft ist Excel geöffnet. Wenn ja, schreibe in die geöffnete Arbeitsmappe. Ich trenne das dann mit Offset's.
Wenn Excel nicht geöffnet ist, macht er die Standardprozedur.


Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
28.10.2009 um 13:39 Uhr
Hallo unkwownuser!

Ich verstehe leider nicht ganz was Du meinst? Vielleicht so was:
01.
Dim Excel, Shell, Result, Wks 
02.
 
03.
Set Shell = WScript.CreateObject("WScript.Shell") 
04.
 
05.
Result = Shell.AppActivate("Microsoft Excel") 
06.
 
07.
Set Excel = CreateObject("Excel.Application") 
08.
 
09.
If Result = True Then 
10.
    Set Wks = Excel.ActiveSheet  
11.
Else 
12.
    Excel.Workbooks.Add:  Excel.Visible = True 
13.
    Set Wks = Excel.ActiveSheet  
14.
End if
Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
28.10.2009 um 15:37 Uhr
Hallo Dieter,

der Code sieht ja mal nicht schlecht aus.
Nochmal ein kurzes Beispiel.
Man hat ein VBScript, das Texte schreibt, Styles definiert usw.
Jetzt kommt der Knackpunkt. Wenn Excel bereits geöffnet ist, soll er das VBScript in der geöffneten Arbeitsmappe ausführen.
Wenn Excel nicht gestartet ist, soll er Excel starten und das VBScript ausführen.


Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
28.10.2009 um 15:55 Uhr
Hallo unkwownuser!

Eigentlich ist das doch genau das, was meine Codebeispiele darstellen. Oder stehe ich irgendwie auf ner Leitung?

Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
28.10.2009 um 16:13 Uhr
Hallo Dieter,

soweit schon, ich stand gerade aufm Schlauch
Ich habe mal einen Test gemacht. Aber irgendwo hängt es noch.

01.
Set Shell = WScript.CreateObject("WScript.Shell") 
02.
Result = Shell.AppActivate("Microsoft Excel") 
03.
Set xExcel = CreateObject("Excel.Application") 
04.
 
05.
If Result = True Then 
06.
	Set ActiveWorkbook = xExcel.ActiveSheet 
07.
	Sub setValue(ByRef ColumnNumber, ByRef RowNumber, ByRef Value) 
08.
		xExcel.ActiveWorkbook.ActiveSheet.Cells(RowNumber, ColumnNumber) = value 
09.
	End Sub 
10.
Else 
11.
	xExcel.Workbooks.Add 
12.
	xExcel.Visible = True 
13.
	Set ActiveWorkbook = xExcel.ActiveSheet 
14.
	Sub setValue(ByRef ColumnNumber, ByRef RowNumber, ByRef Value) 
15.
		xExcel.ActiveWorkbook.ActiveSheet.Cells(RowNumber, ColumnNumber) = value 
16.
	End Sub 
17.
End If 
18.
 
19.
Call setValue(3, 3, "Test")

Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
28.10.2009 um 17:29 Uhr
Hallo unknownuser!

War zu schnell, muss erst noch was ausprobieren

Gruß Dieter
Bitte warten ..
Mitglied: 76109
28.10.2009 um 19:04 Uhr
Hallo unknownuser!

Also, stand ich wohl doch auf der Leitung

Sorry, der Teil mit dem bereits geöffnetten Workbook funktioniert nicht und bis jetzt habe ich noch keinen Weg gefunden, das Object zu selectieren???.

Auch nach zahlreichen Versuchen, war es mir nicht möglich, auf die geöffnette Arbeitsmappe im aktiven Fenster zuzugreifen.

Einfacher wäre es, wenn die offene Datei schon mal gespeichert war und bereits einen Dateinamen hat. Mit neuer Mappe geht es offensichtlich nicht.

Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
29.10.2009 um 08:23 Uhr
Hallo Dieter,

dann ist das Vorhaben, wohl doch nicht möglich.
Aber die Hoffnung stirbt zuletzt.
Ich danke dir für die Unterstützung.


Gruß,
unkwownuser
Bitte warten ..
Mitglied: unkwownuser
29.10.2009 um 15:31 Uhr
Hallo Dieter,

ich glaube die Lösung zu haben.

01.
Set Shell = WScript.CreateObject("WScript.Shell") 
02.
Result = Shell.AppActivate("Microsoft Excel") 
03.
 
04.
If Result = True Then 
05.
	Set xExcel = GetObject(, "Excel.Application") 
06.
	Set ActiveWorkbook = xExcel.ActiveSheet 
07.
	Sub setValue(ByRef ColumnNumber, ByRef RowNumber, ByRef Value) 
08.
		xExcel.ActiveWorkbook.ActiveSheet.Cells(RowNumber, ColumnNumber) = value 
09.
	End Sub 
10.
Else 
11.
	Set xExcel = CreateObject("Excel.Application") 
12.
	xExcel.Workbooks.Add 
13.
	xExcel.Visible = True 
14.
	Set ActiveWorkbook = xExcel.ActiveSheet 
15.
	Sub setValue(ByRef ColumnNumber, ByRef RowNumber, ByRef Value) 
16.
		xExcel.ActiveWorkbook.ActiveSheet.Cells(RowNumber, ColumnNumber) = value 
17.
	End Sub 
18.
End If 
19.
 
20.
Call setValue(3, 3, "Test")

Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
29.10.2009 um 16:48 Uhr
Hallo unknownuser!

Toll, Spitzenleistung

Diese Konstellation hatte ich so ähnlich versucht. Mit dem Komma gab's dann aber Probleme z.B. GetObject("",...)...

Die Sub muss nicht in die If-Schleife. Das jeweile ActiveWorkbook.ActiveSheet wird in beiden Fällen durch die Variable Wks repräsentiert.

Und noch eine Anmwerkung zu ByRef. Das macht nur Sinn, wenn es sich um Objecte, Datei-Strings oder Strings handelt. Verwende bei Zahlenwerten ByVal.

01.
Set Shell = WScript.CreateObject("WScript.Shell") 
02.
Result = Shell.AppActivate("Microsoft Excel") 
03.
 
04.
If Result = True Then 
05.
	Set xExcel = GetObject(, "Excel.Application") 
06.
	Set Wks = xExcel.ActiveWorkbook.ActiveSheet 
07.
Else 
08.
	Set xExcel = CreateObject("Excel.Application") 
09.
	xExcel.Workbooks.Add 
10.
	xExcel.Visible = True 
11.
	Set Wks = xExcel.ActiveWorkbook.ActiveSheet 
12.
End If 
13.
 
14.
Call setValue(3, 3, "Test") 
15.
 
16.
Sub setValue(ByVal ColumnNumber, ByVal RowNumber, ByRef Value) 
17.
    Wks.Cells(RowNumber, ColumnNumber) = value 
18.
End Sub
Weiter so

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VBS Ordner erstellen - wenn nicht vorhanden! (1)

Frage von freshman2017 zum Thema VB for Applications ...

Batch & Shell
gelöst Hilfe Bei einem vbs Script (19)

Frage von Hattori-Hanzo zum Thema Batch & Shell ...

VB for Applications
gelöst Kommunikation zwischen vbs und javascript (1)

Frage von it4baer zum Thema VB for Applications ...

Batch & Shell
gelöst Vbs programm unabhängig vom Speicherort ausführen (2)

Frage von Markus2016 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Erkennung und -Abwehr

Infineon TPMs unsicher! Bitlocker ggf. angreifbar

(4)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Firewall

PfSense Repository für Version 2.3.x

(6)

Information von Dobby zum Thema Firewall ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...