Italia
Foro

Exceldaten circa ocx kopieren

 

Christof
Neuß
Ciao,

brauche mal wieder einen Anschubser. Es geht darum, dass ich einen Bereich aus einer Exceldatei in un andere Exceldatei kopieren möchte. Eigentlich ganz einfach, aber...

Ich habs mal so probiert, aber schon beim "Select" springt mir das Ding raus.
Oh, äähh... die hier sind naturalmente oben angegeben, sonst gehts ja gar nicht.
 $H Windows.ph
 $H ocx3a.ph
 $I ocx3a.inc

Proc DatenKopieren

    Excel öffnen
    ocxInit()
    VAR File1$   =$ProgDir+"GGBVSDialog.xls"
    VAR File2$   =$ProgDir+"GGBVSDialog_Auswertung.xlsx"
    VAR Excel&    =ocxCreate("Excel.Application")
    VAR Workbooks&=ocxGet(Excel&,"Workbooks")
    Exceldatei der Bank öffnen GGBVSDialog.xls
    VAR NewBook1&=ocxMethod(Workbooks&,"Open",File1$)
    VAR Sheet1&=ocxGet(NewBook1&,"Sheets","BankDaten")
    VAR Range1&=ocxGet(Sheet1&,"Range","B6:F100")
    Exceldatei der GGB öffnen GGBVSDialog_Auswertung.xlsx
    VAR NewBook2&=ocxMethod(Workbooks&,"Open",File2$)
    VAR Sheet2&=ocxGet(NewBook2&,"Sheets","BankDaten")
    VAR Range2&=ocxGet(Sheet1&,"Range","B6")
    BankDaten kopieren
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Sheet1&,"Select","B6:F100")
    Die Messagebox sollte nur Mostra, ob der Select-Befehl funktioniert hat,
    also nicht mit Fehlermeldung dort rausgesprungen ist. Soweit kommt das Ding
    aber gar nicht.
    MessageBox("Select gelaufen","Meldung",0)
    ocxMethod(Sheet1&,"Copy")
    ocxMethod(Sheet2&,"Select","B6")
    ocxMethod(Sheet2&,"PasteSpecial",)
    Exceldateien und Excel schließen
    ocxPut(NewBook1&,"Saved",1)
    ocxMethod(NewBook1&,"Close")
    ocxMethod(NewBook1&,"Save")
    ocxPut(NewBook2&,"Saved",1)
    ocxMethod(NewBook1&,"Close")
    ocxMethod(Excel&,"Quit")
    ocxRelease(Range1&,Sheet1&,NewBook1&)
    ocxRelease(Range2&,Sheet2&,NewBook2&)
    ocxRelease(WorkBooks&,Excel&)
    ocxDeInit()

endproc


Oh, die Sheets sind in beiden File gleich aufgebaut. Auf Formatierungen etc. braucht man also keine Rücksicht nehmen. Mit der ersten File werden die Daten beim Kunden abgeholt, in der zweiten sind zusätzlich die Auswertungsblätter.

Danke
 
Win10 16 GB RAM
14.04.2010  
 




=== SORRY!!!! ===
Hatte den Beitrag irgendwie unter Include erstellt. Kriege ich da auch nicht mehr weg, oder?
Deshalb hier noch mal.


Kein Problem, demnächst kann man seine Argomenti auch beliebig verschieben, ich glaube "Löschen" hättest Du den Beitrag unter Include jedoch können. (andernfalls muss ich nochmal ran) Habe dortigen Beitrag einfach "entfernt". ^^

Zum Code kann ich wenig sagen, naja, ich sehe "unbekannte" Escapesequenzen. ^^
 
14.04.2010  
 




Christof
Neuß
Da bin ich noch mal.

Thema erledigt. Ich habs durch probieren lösen können. Manchmal hilft einfach eine Pause. Danach gehts besser. Den Thread hier setzt doch jemand auf "erledigt", oder muss/kann ich das irgendwo machen?

Ach ja, Eines interessiert mich schon noch. Bekommt das XProfan-Programm eigentlich eine Rückmeldung von den abgesetzten ocx-Befehlen und arbeitet erst dann weiter oder werden die einfach in die Queue geschmissen? Hintergrund der Frage: Muss ich ein "Sleep" einbauen, wenn ich z.B. eine grande Exceldatei mit "Save" speichern lasse und das einige Zeit dauert oder kann ich mir das sparen?

Wens interessiert, hier ist der Code:
KompilierenMarkierenSeparieren
Proc DatenKopieren

    Excel öffnen
    ocxInit()
    VAR Datei1$   =$ProgDir+"GGBVSDialog.xls"
    VAR Datei2$   =$ProgDir+"GGBVSDialog_Auswertung.xlsx"
    VAR Excel&    =ocxCreate("Excel.Application")
    ocxPut(Excel&,"DisplayAlerts",0)
    VAR Workbooks&=ocxGet(Excel&,"Workbooks")
    Exceldatei der Bank öffnen GGBVSDialog.xls
    VAR NewBook1&=ocxMethod(Workbooks&,"Open",Datei1$)
    VAR Sheet1&=ocxGet(NewBook1&,"Sheets","BankDaten")
    VAR Range1&=ocxGet(Sheet1&,"Range","B6:F100")
    Exceldatei der GGB öffnen GGBVSDialog_Auswertung.xlsx
    VAR NewBook2&=ocxMethod(Workbooks&,"Open",Datei2$)
    VAR Sheet2&=ocxGet(NewBook2&,"Sheets","BankDaten")
    VAR Range2&=ocxGet(Sheet2&,"Range","B6")
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    Exceldateien wurden geöffnet..."
    BankDaten kopieren
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    Bankdaten wurden kopiert..."
    KAP_Fiku kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_Fiku")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_Fiku")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    FIKU-Daten wurden kopiert..."
    KAP_Priku kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_Priku")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_Priku")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    PRIKU-Daten wurden kopiert..."
    KAP_betreut kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_betreut")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_betreut")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    KAP-Daten Betreuer/Berater wurden kopiert..."
    Exceldateien und Excel schließen
    ocxPut(NewBook1&,"Saved",1)
    ocxMethod(NewBook1&,"Close")
    Sheet2&=ocxGet(NewBook2&,"Sheets","Inhalt")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(NewBook2&,"Save")
    ocxPut(NewBook2&,"Saved",1)
    ocxMethod(NewBook2&,"Close")
    ocxMethod(Excel&,"Quit")
    ocxRelease(Range1&,Sheet1&,NewBook1&)
    ocxRelease(Range2&,Sheet2&,NewBook2&)
    ocxRelease(WorkBooks&,Excel&)
    ocxDeInit()
    SetText Elemente&[3], GetText$(Elemente&[3])+"
    Exceldateien gespeichert und Excel beendet..."
lass=s4 href='./../../function-references/xprofan/endproc/'>endproc

Danke.
 
Win10 16 GB RAM
16.04.2010  
 



Zum OCX-Thema weiß ich nicht, ob es da ein "Ready-" oder "Busy-State" gibt. Um Thema als erledigt zu markieren, einfach links oben auf den Button "Thema: ..." klicken und [X] Aktiv-Häkchen entfernen und speichern. ^^
 
16.04.2010  
 




Uwe
''Pascal''
Niemeier
Hallo Christof!


Bekommt das XProfan-Programm eigentlich eine Rückmeldung von den abgesetzten ocx-Befehlen und arbeitet erst dann weiter oder werden die einfach in die Queue geschmissen? Hintergrund der Frage: Muss ich ein "Sleep" einbauen, wenn ich z.B. eine grande Exceldatei mit "Save" speichern lasse und das einige Zeit dauert oder kann ich mir das sparen?


Das kommt auf die Funktion an.
Nach meiner Erfahrung arbeiten die meisten Methoden asynchron, d.h. das Hauptprogramm corre weiter, während die Funktion noch arbeitet.
Das kann beim Speichern von grande und/oder mehreren File zu Problemen führen.
Darum gibt es wie iF schon sagte oft eine State- oder Busy-Abfrage.

Ein möglicher Workaround wäre, nach Absetzen des Schreibbefehles in einer Schleife die Dimensione der File zu überprüfen; bekommt man während des Schreibvorganges keinen Zugriff (FileSize= -1; Fehlermeldungen ausschalten), ist die File noch nicht fertig.
Wenn man die Sollgröße der File kennt, kann man nach dem Schreiben auch prüfen, ob die File vollständig ist und gegebenenfalls den Vorgang wiederholen.

Wie gesagt, das hängt vom verwendeten ActiveX-Objekt (Excel, HTML, Zip, db usw.) ab.
Im Zweifelsfall also ausprobieren!

HTH
Pascal
 
18.04.2010  
 




Christof
Neuß
Hallo Pascal,

danke per die Hinweise. Sind hilfreich. Das mit der FileSize muss ich mal ausprobieren. Bis jetzt hatte ich ein Sleep eingebaut, aber da die File unterschiedlich grande sind und/oder das System auch mal schneller und mal langsamer ist, verschenkt man Zeit oder man ist doch nicht sicher, dass alles gespeichert ist.
 
Win10 16 GB RAM
23.04.2010  
 



Hallo Christof,

ich bekomme bei der Zeile
VAR NewBook1&=ocxMethod(Workbooks&,"Open",File1$)
stets eine Fehlermeldung CallMethod Fehler $-7FF5FC14-2146827284 unbekannter Fehler

Und danach stürtzt das Programm ab...

Umgebung: WIN7, XPROFAN12ß14, gilt aber auch per XPROFAN11.2
 
30.09.2010  
 



Ist naturalmente schade, dass die in Codes angegebenen Excel-File nicht hochgeladen wurden z.B. mit Demodaten. @Ospite: Kannst Du bitte einen kompletten Code mit dazugehöriger Excel-File hochladen sodass der Absturz einfacher nachvollziebar ist?
 
30.09.2010  
 




Stephan
Sonneborn
Hi David,

ich wars... Ich hatte vergessen, mich anzumelden und dann war der Post auch schon drin...

Also, der Quellcode ist der, den Christof gepostet hat. Bis auf die Daten. das sind 2 eigene Test-File gleichen Inhalts.


KompilierenMarkierenSeparieren
 $H Windows.ph
 $H ocx3a.ph
 $I ocx3a.inc

Proc DatenKopieren

    'Excel öffnen
    ocxInit()
    VAR Datei1$   =$ProgDir+"Test.xls"
    VAR Datei2$   =$ProgDir+"test2.xls"
    VAR Excel&    =ocxCreate("Excel.Application")
    ocxPut(Excel&,"DisplayAlerts",0)
    VAR Workbooks&=ocxGet(Excel&,"Workbooks")
    'Exceldatei der Bank öffnen GGBVSDialog.xls
    VAR NewBook1&=ocxMethod(Workbooks&,"Open",Datei1$)
    VAR Sheet1&=ocxGet(NewBook1&,"Sheets","BankDaten")
    VAR Range1&=ocxGet(Sheet1&,"Range","B6:F100")
    'Exceldatei der GGB öffnen GGBVSDialog_Auswertung.xlsx
    VAR NewBook2&=ocxMethod(Workbooks&,"Open",Datei2$)
    VAR Sheet2&=ocxGet(NewBook2&,"Sheets","BankDaten")
    VAR Range2&=ocxGet(Sheet2&,"Range","B6")
    SetText Elemente&[3], GetText$(Elemente&[3])+"Exceldateien wurden geöffnet..."
    'BankDaten kopieren
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"Bankdaten wurden kopiert..."
    'KAP_Fiku kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_Fiku")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_Fiku")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"FIKU-Daten wurden kopiert..."
    'KAP_Priku kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_Priku")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_Priku")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"PRIKU-Daten wurden kopiert..."
    'KAP_betreut kopieren
    Sheet1&=ocxGet(NewBook1&,"Sheets","KAP_betreut")
    Range1&=ocxGet(Sheet1&,"Range","A1:AA1000")
    Sheet2&=ocxGet(NewBook2&,"Sheets","KAP_betreut")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet1&,"Activate")
    ocxMethod(Range1&,"Copy")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(Range2&,"PasteSpecial",)
    SetText Elemente&[3], GetText$(Elemente&[3])+"KAP-Daten Betreuer/Berater wurden kopiert..."
    'Exceldateien und Excel schließen
    ocxPut(NewBook1&,"Saved",1)
    ocxMethod(NewBook1&,"Close")
    Sheet2&=ocxGet(NewBook2&,"Sheets","Inhalt")
    Range2&=ocxGet(Sheet2&,"Range","A1")
    ocxMethod(Sheet2&,"Activate")
    ocxMethod(NewBook2&,"Save")
    ocxPut(NewBook2&,"Saved",1)
    ocxMethod(NewBook2&,"Close")
    ocxMethod(Excel&,"Quit")
    ocxRelease(Range1&,Sheet1&,NewBook1&)
    ocxRelease(Range2&,Sheet2&,NewBook2&)
    ocxRelease(WorkBooks&,Excel&)
    ocxDeInit()
    SetText Elemente&[3], GetText$(Elemente&[3])+"Exceldateien gespeichert und Excel beendet..."

endproc

cls
datenkopieren
wa
t end


BTW: Wie kann man eigentlich Code als solchen kennzeichnen? Irgendwie komme ich mit der neuen Umgebung hier nicht wirklich klar. Auch das Citazione klappt nicht...

14 kB
Kurzbeschreibung: Testdaten
Hochgeladen:01.10.2010
Downloadcounter156
Download
14 kB
Kurzbeschreibung: Testdaten
Hochgeladen:01.10.2010
Downloadcounter190
Download
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
01.10.2010  
 




Jörg
Sellmeyer
Einfach den Code in [ code] hier der Code [ /code ] "einwickeln". Natürlich ohne die Leerzeichen.
Und das Citazione scheint tatsächlich nicht zu funktionieren.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
01.10.2010  
 



[offtopic]Ich habe noch keine Toolbar per die Beitragseditoren hergestellt (wird naturalmente nachgeholt), darum steht man zur Zeit bisl doof da ahahahber ich habe es mal gepackt ne Seite herzustellen wo auch alle Kommandos gelistet werden können [...]  .[/offtopic]
 
02.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Stephan!

Sollte eigendlich klappen...
Bist du sicher, daß die File wirklich gefunden werden? Trag doch mal zu Testzwecken die Pfade direkt in den Code ein.
$ProgDir liefert ja den Pfad zum Ordner mit Interpreter oder Runtime, nicht zu dem Ordner, in dem der Code liegt.

SeeYou
Pascal
 
02.10.2010  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

29.330 Views

Untitledvor 0 min.
Langer02.04.2017
Uwe Lang22.07.2016
RudiB.19.11.2015
Klaus Ernst03.03.2015
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie