WinCC Einlesen von Prozess-Daten über Excel / Fehler

Martin3G

Level-1
Beiträge
61
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

und zwar bearbeite ich gerade ein Wincc Projekt (7.4), auf welches ich aufbauen möchte, bzw. ändere.
Hierbei wird mit Hilfe eines Buttons eine Abfrage gestartet, dabei wird der Pfad, der zu Speichernden Excel Tabelle festgelegt (frei Wählbar).
Von diesem Pfad werden Später die vordefinierten Prozess-Daten eingelesen.
Nun bekomme ich beim Testen des VBS-Codes eine Fehlermeldung, Windows Script Host ("C:\Users\Win7" hat keine Dateierweiterung). (Bild im Anhang )
Dazu muss man sagen, dass das Projekt mit Windows XP programmiert wurde und ich aktuell mit Windows 7 arbeite.

Das Problem dabei ist, ich kenne mich nicht so gut mit der VBS-Programmierung aus und kann den Fehler nicht finden.


Es wäre super wenn Ihr mir weiterhelfen könntet?

Danke schon mal im voraus, bin für jede Anregung dankbar
 

Anhänge

  • Fehler.jpg
    Fehler.jpg
    217,3 KB · Aufrufe: 57
Kannst du mir mal verraten, was du mit der Shell herummachst und dir davon versprichst ?
Ist Excel auf dem zuständigen Rechner installiert ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

ich selbst hab das Programm nicht geschrieben, versuche es zu verstehen bzw. es zum laufen zu bekommen.
Meine Kenntnisse hinsichtlich der Programmiersprache sind noch begrenzt.
Hoffe du kannst mir trotzdem einen tipp geben.
Excel ist auf dem Rechner installiert.

Gruß
Martin3G
 
hier das komplette Script.
Den Eintrag hab ich noch nicht gesehen, werde ihn mir ansehen, danke dafür.



Code:
[B]"links drücken"
[/B]Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)       
Dim a,process, wmi, processes
Dim objDialog, intResult


Set wmi = GetObject("winmgmts:")
Set processes=wmi.InstancesOf("win32_process")
For each process in processes
	If LCase(process.name)= LCase("wscript.exe") Then
		process.terminate(0)
	End If
Next
End Sub

[B]"links loslassen"[/B]
Sub OnLButtonUp(Byval Item, Byval Flags, Byval x, Byval y) 
Dim a, wshshell, key, b
Dim objExcelApp
Dim objTag_intern, objTag_extern, Zaehler


On Error Resume Next
Set objTag_extern = HMIRuntime.Tags("Digi_S7_WinCC1")



'Prüfablaufunterbrechungen auf Null setzen
Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_1")
objTag_extern.Write 0
Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_2")
objTag_extern.Write 0


Set wshshell = CreateObject("Wscript.shell")
wshshell.regwrite "HKEY_CURRENT_USER\temp\dir", ""
b = ("wscript.exe" & " " & HMIRuntime.ActiveProject.Path & "\library\dialog_öffnen.vbs")


a = CreateObject("Wscript.shell").Run(b,1,True) 


key = "HKEY_CURRENT_USER\temp\dir"


If wshshell.regread(key) <> "" Then
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
'Excel öffnen ( Applikation starten )
With objExcelApp


.Workbooks.Open wshshell.regread(key)' Öffnen der Excelmappe


'Laufzeiten einlesen
For Zaehler = 1 To 60
    .Range("C" & Zaehler + 4).Select
    Set objTag_extern = HMIRuntime.Tags("PS" & Zaehler & "t")
    If .ActiveCell.Value = "" Then
    objTag_extern.Write 0
    Elseif .ActiveCell.Value = 0 Or (.ActiveCell.Value > 9 And .ActiveCell.Value < 9000) Then objTag_extern.Write .ActiveCell.Value
    Else
    MsgBox "Das Einlesen wird gestoppt ab Zelle C" & Zaehler + 4
    Zaehler = 60
    objExcelApp.Workbooks.Close
    ' Tabelle schließen
    objExcelApp.Quit
    ' Excel schließen
    Set objExcelApp = Nothing
    Exit Sub
    End If
Next



End With


objExcelApp.Workbooks.Close
' Tabelle schließen
objExcelApp.Quit
' Excel schließen
Set objExcelApp = Nothing
MsgBox "Einlesen der Excel-Datei erfolgreich beendet"
End If


End Sub

Gruß
Martin3G
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich werde mir das später mal genauer anschauen ... ungeachtet dessen kannst du aber in dem verlinkten Beitrag mal das Beispiel von mir (im Beitrag #1) wo es um die Excel-Kommunikation geht anschauen.
Generell sind solche Scripte wie dies aber im Visu-Umfeld, ohne die Möglichkeit, sinnvoll den Code zu debuggen, immer "ein wenig" kritisch ...

Gruß
Larry
 
Ach ja ganz vergessen zu Antworten der Fehler lag in der zu öffnenden vbs Datei, "dialog_öffnen. Darin enthalten war ein Script welches unter Windows 7 64 Bit nicht mehr funktioniert bzw. nicht mehr unterstütz wird.
Dabei handelte es sich um die UserAccounts.CommonDialog class, die ersetzt werden musste.

mfg
Martin3G
 
Hallo zusammen,

jetzt hab ich nochmal ein anliegen zu diesem Thema und zwar hatte ich das schon geloest (provisorisch) mit dem UserAccounts.CommonDialog Ersatz.
Das ganze wurde von mir aber nicht sehr elegant geloest.
Ich habe das einfach ueber eine Excel-Applikation geloest.
hier der code:

Code:
Option Explicit 


dim objWorkbook, objExcel, vFileName, wshshell, key, AppActivate, GetOpenFileName


Set wshshell = Createobject("Wscript.shell")


Set objExcel = CreateObject("Excel.Application")


objExcel.Visible = True 
WshShell.AppActivate ("Excel") 


vFileName = objExcel.GetOpenFilename ("Excel Files (*.xlsx),*.xlsx,All Files (*.*),*.*")


If vFileName = FALSE Then
    MsgBox "Bitte Datei auswaehlen"
Else    
    Set objWorkbook = objExcel.Workbooks.Open(vFileName)
    wshshell.regwrite "HKEY_CURRENT_USER\temp\dir", vFileName 


    objExcel.Workbooks.close()
    objExcel.Application.quit()
    Set WshShell = Nothing
End If

Das Problem ist das ich nach dem einlesen des Pfades, im Wincc nochmal eine Excel-Applikation Starte (wie in #5 zu sehen) und ich eigentlich im Dialog_Oeffnen nur das Windows-Dialog-Fenster oeffnen wollte.
Um den Pfad zu uebergeben.
Wie hier im altem script unter Windows XP.
Code:
[LIST=1]
[*][COLOR=darkred]Option[/COLOR] [COLOR=darkred]Explicit[/COLOR]
[*][COLOR=darkgoldenrod]dim[/COLOR] objDialog, intResult, wshshell, key
[*][COLOR=darkgoldenrod]Set[/COLOR] objDialog [COLOR=green]=[/COLOR] [COLOR=darkred]CreateObject[/COLOR]([COLOR=red]"UserAccounts.CommonDialog"[/COLOR])
[*]objDialog.Filter [COLOR=green]=[/COLOR] [COLOR=red]"Excel|*.xls"[/COLOR]
[*]objDialog.FilterIndex [COLOR=green]=[/COLOR] [COLOR=darkorange]1[/COLOR]
[*]objDialog.InitialDir [COLOR=green]=[/COLOR] [COLOR=red]"d:\"[/COLOR]
[*]intResult [COLOR=green]=[/COLOR] objDialog.ShowOpen
[*][COLOR=darkgoldenrod]set[/COLOR] wshshell [COLOR=green]=[/COLOR] [COLOR=darkred]createobject[/COLOR]([COLOR=red]"Wscript.shell"[/COLOR])
[*]wshshell.regwrite [COLOR=red]"HKEY_CURRENT_USER\temp\dir"[/COLOR], objDialog.FileName
[/LIST]
Das ganze bekomme ich aber immer noch nicht hin und frage deshalb nochmal um Rat. ???
Zum Testen der Funktion hat das mit der zweiten Excel-Applikation super Funktioniert, bis auf das verweisen auf das D:\ Laufwerk.
Suche nach wie vor ein Ersatz fuer die unter Windows 64bit nicht mehr Funktionierende UserAccounts.CommonDialog Klasse.

Notfalls auch wie ich auf das Laufwerk D:\ verweisen kann, um nicht jedes mal dies haendisch zu erledigen.
Waere super wenn einer mir da weiterhelfen koennte.

mfg Martin3G
 
Zuletzt bearbeitet:
Hi Volker,

Danke für die schnelle Antwort.
Funktioniert super, hast du ne Ahnung wie ich jetzt noch den Pfad der Ausgewählten Datei in die registry bekomme.

so in etwa:

Code:
Option Explicit

Dim oDlg, sIniDir, sFilter, sTitle, GetFileDlgEx, rep


sIniDir = "D:\\Belastungsvorgaben\\*" 
sFilter = "Excel (*.xlsx)|*.xlsx|"  
sTitle = "Datenauswahl"  
 Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""")  
 
 oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"     'öffnet den dialog
 GetFileDlgEx = oDlg.StdOut.ReadAll




            oDlg.regwrite "HKEY_CURRENT_USER\temp\dir",  benötige hier ein Objekt oder so im dem der Pfad steckt

Möchte diese dann in Wincc auslesen und darüber die Excel-Datei ausführen und das Einlesen beginnen.

Code:
Set wshshell = CreateObject("Wscript.shell")


wshshell.regwrite "HKEY_CURRENT_USER\temp\dir", ""
b = ("wscript.exe" & " " & HMIRuntime.ActiveProject.Path & "\library\dialog_öffnen2.vbs")


a = CreateObject("Wscript.shell").Run(b,1,True) 


key = "HKEY_CURRENT_USER\temp\dir"


If wshshell.regread(key) <> "" Then
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False


'Excel öffnen ( Applikation starten )
With objExcelApp


.Workbooks.Open wshshell.regread(key)' Öffnen der Excelmappe

mfg Martin3G
 
Zuletzt bearbeitet:
ich verstehe nicht den sinn mit dem Umweg über die registry.
in der variablen GetFileDlgEx steckt doch der pfad inkl. Datei.
diese kannst du doch direkt für workbook.open nutzen.

Code:
Set appExcel = CreateObject ("EXCEL.Application")
Set wbExcel = appExcel.Workbooks.Open (GetFileDlgEx)
msgbox "Datei noch offen"
wbExcel.Close true
appExcel.Quit ()

Code:
Verzeichnis ermitteln.
 i=instrrev(GetFileDlgEx,"\")
 Verzeichnis = left(GetFileDlgEx,i)
 msgbox verzeichnis
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
so genau kann ich das mit der Registry auch nicht beantworten, ich bau auf ein älteres Projekt auf und dort wurde diese Prozedur halt benutzt.
Wenn mir das aber keine Vorteile bringt, schwenk ich um zu der anderen Variante.

Hier der geänderte Code:

Öffnen tut er auch alles, aber irgendwie liest er nicht ein
:confused:, er gibt mir dann immer sofort die letzte MsgBox aus, Einlesen der Excel-Datei erfolgreich beendet. Normalerweise benötigt es ja ein bisschen Zeit zum einlesen.

Hast du vielleicht ne Idee.


Code:
Code:
Sub OnLButtonUp(Byval Item, Byval Flags, Byval x, Byval y)         
                                                                                                
Dim a, wshshell, key, b
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
Dim objTag_intern, objTag_extern, Zaehler, Zaehler_Trag, Zeichen
Dim MotorGenerator, GeneratorMotor
Dim Uebersetz_G1, Uebersetz_G2


Dim oDlg, sIniDir, sFilter, sTitle, GetFileDlgEx, rep


On Error Resume Next
Set objTag_extern = HMIRuntime.Tags("Digi_S7_WinCC1")




sIniDir = ("D:\\Belastungsvorgaben\\*") 
sFilter = ("Excel (*.xlsx)|*.xlsx|")  
sTitle = ("Auswahl der Benötigten Excel-Datei")  


Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""")  
 
oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"     'öffnet den dialog
GetFileDlgEx = oDlg.StdOut.ReadAll




Set objExcelApp = CreateObject("Excel.Application")
Set objWorkbooks = appExcel.Workbooks.Open (GetFileDlgEx)


'Solldrehzahl Abtrieb einlesen
For Zaehler = 1 To 120
    .Range("C" & Zaehler + 4).Select
    Set objTag_intern = HMIRuntime.Tags("P" & Zaehler & "n")
    Set objTag_extern = HMIRuntime.Tags("PS" & Zaehler & "n")
    If .ActiveCell.Value = "" Then
    objTag_intern.Write 0
    objTag_extern.Write 0
    Elseif .ActiveCell.Value = 0 Or (.ActiveCell.Value > 9 And .ActiveCell.Value < 5400) Then 
    objTag_intern.Write .ActiveCell.Value
        If Motorgenerator = 1 Then
        objTag_extern.Write  .ActiveCell.Value * Uebersetz_G1 / Uebersetz_G2
        Elseif generatormotor = 1 Then
        objTag_extern.Write  .ActiveCell.Value * Uebersetz_G2 / Uebersetz_G1
        Else objTag_extern.Write 0
        End If
    Else
    MsgBox "Das Einlesen wird gestoppt ab Zelle A" & Zaehler + 4
    Zaehler = 120
    Exit Sub    
    End If


objExcelApp.Workbooks.Close True
' Tabelle schließen
objExcelApp.Quit
' Excel schließen
Set objExcelApp = Nothing
' Variable freigeben


MsgBox "Einlesen der Excel-Datei erfolgreich beendet",vbSystemModal
 


End Sub


mfg Martin3G
 
ohne mir den code jetzt näher anzusehen.
kommentier mal die zeile on error resume next aus.
gibt's dann eine Fehlermeldung?

EDIT:
Außerdem vermisse ich das NEXT für die FOR-Schleife

EDIT2:
das muss natürlich bei dir so aussehen da in meinem Beispiel das objekt nur ExcelApp hieß
Set objWorkbooks = objExcelApp.Workbooks.Open (GetFileDlgEx)
 
Zuletzt bearbeitet:
hab die Zeile auskommentiert und das Next nach der For schleife eingefügt.
Jetzt kommt die letzte MsgBox nicht mehr, er bleibt wohl irgendwo Hengen.
Fehlermeldung gibt es nicht.

mfg Martin3G
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nun gut.
ich kenne mich mit winCC nicht aus. möglich das dort beim fehler kein popup aufgeblendet wird.
siehe mein edit2 im vorigen post. das produziert definitiv einen fehler.
 
Entschuldigung hab das Wincc Tool ganz vergessen und dieses Schmeißt beim Auskommentieren der Zeile ein Fehler.

============Laufzeitfehler in Microsoft VBScript============Application : PDLRT
Picture : Prueflauf1.pdl_Events
Function : Sub Button20_OnLButtonUp(Byval Item, Byval Flags, Byval x, Byval y)
Line : 74
Error : Unzulässiger oder nicht ausreichend definierter Verweis
============Laufzeitfehler in Microsoft VBScript============

dazu Poste ich lieber nochmal das gesamte Script.
Hab die Zeile mit dem Fehler rot Markiert.

Code:
Sub OnLButtonUp(Byval Item, Byval Flags, Byval x, Byval y)                              
Dim a, wshshell, key, b
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
Dim objTag_intern, objTag_extern, Zaehler, Zaehler_Trag, Zeichen
Dim MotorGenerator, GeneratorMotor
Dim Uebersetz_G1, Uebersetz_G2


Dim oDlg, sIniDir, sFilter, sTitle, GetFileDlgEx, rep, appExcel, wbExcel 


'On Error Resume Next
Set objTag_extern = HMIRuntime.Tags("Digi_S7_WinCC1")


'If (objTag_extern.read And &H40040000) = &H40040000 Then
'motorgenerator = 1
'generatormotor = 0
'Elseif (objTag_extern.read And &H80020000) = &H80020000 Then
'motorgenerator = 0
'generatormotor = 1
'Else MsgBox "Keine Betriebsart für Maschine 1 und Maschine 2 angegeben"
'Exit Sub
'End If


'Set objTag_extern = HMIRuntime.Tags("Übersetz_G1")
'If objTag_extern.Read = 0 Then 
 'MsgBox "Kein Übersetzungsverhältnis für G1 angegeben"
 'Exit Sub
'Else Uebersetz_G1 = objTag_extern.Read
'End If


'Set objTag_extern = HMIRuntime.Tags("Übersetz_G2")
'If objTag_extern.Read = 0 Then 
 'MsgBox "Kein Übersetzungsverhältnis für G2 angegeben"
 'Exit Sub
'Else Uebersetz_G2 = objTag_extern.Read
'End If


'Prüfablaufunterbrechungen auf Null setzen
'Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_1")
'objTag_extern.Write 0
'Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_2")
'objTag_extern.Write 0
'Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_3")
'objTag_extern.Write 0
'Set objTag_extern = HMIRuntime.Tags("Trag_DWORD_4")
'objTag_extern.Write 0




sIniDir = ("D:\\Belastungsvorgaben\\*") 
sFilter = ("Excel (*.xlsx)|*.xlsx|")  
sTitle = ("Auswahl der Benötigten Excel-Datei")  
Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""")  
 
oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"     'öffnet den dialog
GetFileDlgEx = oDlg.StdOut.ReadAll


Set objExcelApp = CreateObject("Excel.Application")
Set objWorkbooks = objExcelApp.Workbooks.Open (GetFileDlgEx)


'Laufzeiten einlesen
For Zaehler = 1 To 120
	[COLOR=#ff0000].Range("B" & Zaehler + 4).Select  ' hier der Fehler[/COLOR]
	Set objTag_extern = HMIRuntime.Tags("PS" & Zaehler & "t")
	If .ActiveCell.Value = "" Then
	objTag_extern.Write 0
	Elseif .ActiveCell.Value = 0 Or (.ActiveCell.Value > 9 And .ActiveCell.Value < 9000) Then objTag_extern.Write .ActiveCell.Value
	Else
	MsgBox "Das Einlesen wird gestoppt ab Zelle C" & Zaehler + 4
	Zaehler = 120
	'objExcelApp.Workbooks.Close
	' Tabelle schließen
	'objExcelApp.Quit
	' Excel schließen
	'Set objExcelApp = Nothing
	Exit Sub
	End If
Next


'Solldrehzahl Abtrieb einlesen
For Zaehler = 1 To 120
	.Range("C" & Zaehler + 4).Select
	Set objTag_intern = HMIRuntime.Tags("P" & Zaehler & "n")
	Set objTag_extern = HMIRuntime.Tags("PS" & Zaehler & "n")
	If .ActiveCell.Value = "" Then
	objTag_intern.Write 0
	objTag_extern.Write 0
	Elseif .ActiveCell.Value = 0 Or (.ActiveCell.Value > 9 And .ActiveCell.Value < 5400) Then 
	objTag_intern.Write .ActiveCell.Value
		If Motorgenerator = 1 Then
		objTag_extern.Write  .ActiveCell.Value * Uebersetz_G1 / Uebersetz_G2
		Elseif generatormotor = 1 Then
		objTag_extern.Write  .ActiveCell.Value * Uebersetz_G2 / Uebersetz_G1
		Else objTag_extern.Write 0
		End If
	Else
	MsgBox "Das Einlesen wird gestoppt ab Zelle A" & Zaehler + 4
	Zaehler = 120
	'objExcelApp.Workbooks.Close
	' Tabelle schließen
	'objExcelApp.Quit
	' Excel schließen
	'Set objExcelApp = Nothing
	Exit Sub	
	End If
Next


'Solldrehmoment Abtrieb einlesen
For Zaehler = 1 To 120
	.Range("D" & Zaehler + 4).Select
	Set objTag_extern = HMIRuntime.Tags("PS" & Zaehler & "M")
	If .ActiveCell.Value = "" Then
	objTag_extern.Write 0
	Elseif .ActiveCell.Value = 0 Or (.ActiveCell.Value > 9 And .ActiveCell.Value < 40000) Then 
	objTag_extern.Write .ActiveCell.Value
	Else
	MsgBox "Das Einlesen wird gestoppt ab Zelle B" & Zaehler + 4
	Zaehler = 120
	'objExcelApp.Workbooks.Close
	' Tabelle schließen
	'objExcelApp.Quit
	' Excel schließen
	'Set objExcelApp = Nothing
	Exit Sub
	End If
Next


'Prüfablaufunterbrechungen für Tragbildaufnahmen (T) einlesen
For Zaehler = 1 To 119
	.Range("E" & Zaehler + 4).Select
	Set objTag_extern = HMIRuntime.Tags("Trag_" & Zaehler)
	For Zaehler_Trag = 1 To Len(.ActiveCell.Value) 
 		Zeichen = Mid(.ActiveCell.Value, Zaehler_Trag, 1) 
 		If Zeichen = "T" And .cells((Zaehler+4),3).value > 0 Then
 		objTag_extern.Write 1 
 		End If
	Next
Next






objExcelApp.Workbooks.Close
' Tabelle schließen
objExcelApp.Quit
' Excel schließen
Set objExcelApp = Nothing
MsgBox "Einlesen der Excel-Datei erfolgreich beendet",vbSystemModal












End Sub
 
den gleichen fehler bekomme ich auch wenn ich das script als externe vbs unter win7 laufen lasse.
hat das script überhaupt schon mal funktioniert?

ergänze das mal
Code:
Set objWorkbooks = objExcelApp.Workbooks.Open (GetFileDlgEx)
[COLOR=#FF0000]Set wsExcel = objWorkbooks.Worksheets("Tabelle1")[/COLOR][COLOR=#000000] 'in der Hoffnung das niemand den tabellennamen geändert hat[/COLOR][COLOR=#FF0000][/COLOR]
...
    [COLOR=#FF0000]wsExcel[/COLOR].Range("C" & Zaehler + 4).Select
an den anderen stelle natürlich auch ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt meckert er in der Zeile rum, ich denke mal das ist ne never ending story.

"Unzulässiger oder nicht ausreichend definierter Verweis"

Code:
If .ActiveCell.Value = "" Then

Das Programm lief unter Windows XP und mit Hilfe der Registry Anwendung bzw. dessen Makro.
Und ich denke ohne das Makro worauf das Script aufgebaut ist wird er immer wieder rum meckern.
Muss mir erstmal Gedanken machen wie ich weiter verfahre.

vielen Dank für deine Hilfe

mfg Martin3G


[FONT=&quot][/FONT]
 
Moin,

habe das jetzt bloß überflogen, aber musst Du bei deinem Zugriff auf die Eigenschaften
Code:
.Range
die nicht an ein Objekt binden. zb so
Code:
with objWorkbooks
?

Raik
 
Hi,

habe das Programm jetzt so gelassen wie es war, also mit der registry. Die aufzurufende dialog_öffnen.vbs Datei habe ich mit Hilfe geändert.
Das ganze funktioniert jetzt wie gewollt.

Code:
Option Explicit


Dim Excel, wshshell


Set wshshell = CreateObject("Wscript.shell")
Set Excel = CreateObject("Excel.Application")
    
With Excel.FileDialog(3)
     .AllowMultiSelect = False
     .Filters.Clear
     .Filters.Add "Excel files", "*.xls,*.xlsx"
     .InitialFileName = "D:\"
Excel.Visible = True 
wshshell.AppActivate ("Excel")
     .Show
  If .SelectedItems.Count = 1 Then
        wshshell.regwrite "HKEY_CURRENT_USER\temp\dir", .SelectedItems(1)
    End If
End With

Vielen Dank für die Hilfe und einen schönen Tag euch.

mfg Martin3G
 
Zurück
Oben