Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 - MsgBox Abfrage

Frage Entwicklung VB for Applications

Mitglied: unkwownuser

unkwownuser (Level 1) - Jetzt verbinden

30.10.2009 um 11:06 Uhr, 7432 Aufrufe, 7 Kommentare

Hallo liebes administrator.de Forum,

hier eine kleine Struktur meines Vorhabens.
Wenn Excel geöffnet dann --> MsgBox (Ja/Nein) --> wenn Antwort "Ja" dann --> schreibe in aktive Arbeitsmappe und setze Offsets (ActiveCell) --> sonst --> erstelle eine neue Arbeitsmappe.
Desweiteren soll der StyleName überprüft werden. Falls der StyleName schon vorhanden ist, soll eine Sub (z.B. Style definieren) ignoriert werden.
Gibts da vllt. eine Find.Style Funktion?

Der Code sieht zur Zeit so aus.
01.
	Set xExcel = GetObject(, "Excel.Application") 
02.
	Answer = MsgBox("Wollen Sie in die aktive Arbeitsmappe schreiben?", 4) 
03.
		If Answer = vbYes Then 
04.
			xExcel.ActiveCell.Offset(1, 1).Activate 
05.
		Else 
06.
			xExcel.Workbooks.Add 
07.
		End If 
08.
	Set ActiveWorkbook = xExcel.ActiveSheet
Das mit dem Offset muss noch bisschen überarbeitet werden.


Gruß,
unkwownuser
Mitglied: 76109
30.10.2009 um 12:29 Uhr
Hallo unknownuser!

Die Styleabfrage in etwa so:
01.
Set xExcel = GetObject(, "Excel.Application") 
02.
 
03.
If TestStyle(xExcel.ActiveWorkbook, "Normal") = True Then MsgBox "True" Else MsgBox "False" 
04.
 
05.
Function TestStyle (ByRef Wkb, ByRef StyleName) 
06.
    Dim Style 
07.
    TestStyle = False 
08.
    For Each Style In Wkb.Styles 
09.
        If Style.Name = StyleName Then TestStyle = True:  Exit For 
10.
    Next 
11.
End Function
Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
30.10.2009 um 13:08 Uhr
Hallo Dieter,

erstmal vielen Dank für Hilfe.
Aber ich blicke nicht so wirklich durch, was du da gemacht hast. Könntest du das vllt. kurz erklären?


Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
30.10.2009 um 13:42 Uhr
Hallo unkwownuser!

Du willst ja wissen, ob ein bestimmter Style-Name schon existiert. Folglich muss ja die Style-Liste der aktiven Arbeitsmappe nach einem Style-Namen durchsucht werden.Die Liste enthält ja schon definierte Styles z.B. "Normal", "Percent", "Comma" usw. Und so eine Liste läßt sich mit einer For Each-Funktion auslesen, wobei Style immer ein Item von x-Items darstellt, also nachaneinander einen bestimmten Eintrag in einem Array suchen und wenn gefunden, dann Funktionsrückgabewert = True setzen und die Schleife verlassen. Der Funktionsrückgabewert muss natürlich vorher mit False initialisiert werden, sonst wäre der Rückgabewert = "", wenn der Style-Name nicht gefunden wurde. Beantwortet das Deine Frage?

Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
30.10.2009 um 14:39 Uhr
Hallo Dieter,

so grob habe ich es verstanden.
Jedoch besteht immer noch das gleiche Problem wie vorher.


Hier mal der aktuelle Code. Einfach zweimal öffnen (beim zweiten mal in die aktive Arbeitsmappe).

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.
	Answer = MsgBox("In aktive Arbeitsmappe schreiben?", 4) 
07.
		If Answer = vbYes Then 
08.
			If TestStyle(xExcel.ActiveWorkbook, "Style1") = True Then MsgBox "True" Else MsgBox "False" 
09.
			Function TestStyle (ByRef Wkb, ByRef StyleName) 
10.
				TestStyle = False 
11.
				For Each Style In Wkb.Styles 
12.
					If Style.Name = StyleName Then TestStyle = True:  Exit For 
13.
				Next 
14.
			End Function 
15.
		Else 
16.
			xExcel.Workbooks.Add 
17.
		End If 
18.
	Set ActiveWorkbook = xExcel.ActiveSheet 
19.
Else 
20.
	Set xExcel = CreateObject("Excel.Application") 
21.
	xExcel.Workbooks.Add 
22.
	xExcel.Visible = True 
23.
	Set ActiveWorkbook = xExcel.ActiveSheet 
24.
End If 
25.
 
26.
Sub defineStyle(ByRef StyleName, ByRef FontName) 
27.
	With xExcel.ActiveWorkbook.Styles.Add(StyleName) 
28.
		.Font.Name = FontName 
29.
	End With 
30.
End Sub 
31.
 
32.
Call defineStyle("Style1", "Tahoma")

Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
30.10.2009 um 15:27 Uhr
Hallo unknownuser!

ungetestet eher so:
01.
'Main Begin 
02.
 
03.
Set Shell = WScript.CreateObject("WScript.Shell") 
04.
Result = Shell.AppActivate("Microsoft Excel") 
05.
 
06.
If Result = True Then 
07.
	Set xExcel = GetObject(, "Excel.Application") 
08.
	Answer = MsgBox("In aktive Arbeitsmappe schreiben?", 4) 
09.
		If Answer = vbYes Then 
10.
			If TestStyle(xExcel.ActiveWorkbook, "Style1") = False Then Call defineStyle("Style1", "Tahoma") 
11.
		Else 
12.
			xExcel.Workbooks.Add 
13.
	  		Call defineStyle("Style1", "Tahoma") 
14.
		End If 
15.
	Set ActiveWorkbook = xExcel.ActiveSheet 
16.
Else 
17.
	Set xExcel = CreateObject("Excel.Application") 
18.
	xExcel.Workbooks.Add 
19.
	xExcel.Visible = True 
20.
	Set ActiveWorkbook = xExcel.ActiveSheet 
21.
	Call defineStyle("Style1", "Tahoma") 
22.
End If 
23.
 
24.
'......... 
25.
 
26.
'Main Ende 
27.
 
28.
Sub defineStyle(ByRef StyleName, ByRef FontName) 
29.
	With xExcel.ActiveWorkbook.Styles.Add(StyleName) 
30.
		.Font.Name = FontName 
31.
	End With 
32.
End Sub 
33.
 
34.
Function TestStyle (ByRef Wkb, ByRef StyleName) 
35.
	TestStyle = False 
36.
	For Each Style In Wkb.Styles 
37.
	    If Style.Name = StyleName Then TestStyle = True:  Exit For 
38.
	Next 
39.
End Function
Grundsätzliches:
Sub's und Funktionen immer als solche seperat nach dem Main-Code plazieren. Wenn das Script gestartet wird, dann wird NUR der Code im Main-Teil ausgeführt.
Die Sub's und Funktionen werden nur ausgeführt, wenn sie aus dem Main-Teil oder aus einer anderen Sub/Funktion heraus aufgerufen werden.
Der Unterschied zwischen einer Sub und Funktion ist der, das bei Funtionen ein Wert zurückgegeben wird (Funktions-Name = Wert)

Gruß Dieter
Bitte warten ..
Mitglied: unkwownuser
04.11.2009 um 08:40 Uhr
Hallo Dieter,

funktioniert eiwandfrei.
Ich danke dir vielmals.


Gruß,
unkwownuser
Bitte warten ..
Mitglied: 76109
04.11.2009 um 10:53 Uhr
Hallo unkwownuser!

Freut mich, wenn's funktioniert

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...