View Full Version : Aus Excel Zellenwert an AS400 übertragen
Hallo zusammen,
ich habe eine Exceltabelle die Produktionsdaten darstellt und ich würde gerne die Werte (aus einer Formel gebildet) die da raus kommen zur AS400 senden. Ich habe die Tabelle und Spalte schon ausfindig gemacht wo die Daten hingehöhren. Jetzt ist nur die Frage wie ich die Werte mittels Makro da hin bekommen...
PS.: Werte von AS400 zu Excel kann ich schon... lol
Ich bedanke mich schon mal für eure Hilfe
Dies können nur die wenigsten.
Du benötigst hierzu ein VBA-Modul, dass mittels ODBC-Zugriff die Daten exportiert.
Alternativ kannst du auch mein Tool Upload/400 downloaden und verwenden.
Ist das nicht das selbe wie Daten von der AS400 holen nur anders rum?
Dies ist wenn ich daten von der AS400 hole...
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AS400masch;" _
, Destination:=Range("A1"))
.CommandType = xlCmdSql
.CommandText = Array( _
"SELECT AVE.ENAMEH, AVE.ENAMEV, AVML01.VENDOR, AVML01.VNDNAM,", _
" AVE.EPHONE, AVE.EFUNK, AVE.EMAIL", _
" FROM AS400masch.BPCSF.AVML01 AVML01, ", _
"AS400masch.BPCSF.AVE AVE WHERE AVML01.VENDOR= AVE.EVEND and AVE.ESTRE = 'PMM' ")
Excel und MS-Query unterstützen allerdings nur SELECT.
Um Daten auf die AS/400 zu schieben brauchst du einen UPDATE ... WHERE bzw. Insert.
Genau dieses macht mein Upload/400.
Also geht dies nicht so ohne weiteres?
Ich wollte dem User es so einfach wie möglich machen und durch ein "einfaches" Makro ein bisschen Arbeit abnehmen.
Durch die Software von Ihnen ist ja erst wieder eine Istallation und Einweisung und Schulung von nöten und dann ist es immer noch nicht gewärleistet das der User es richtig macht. Im Excel ist alles soweit gesichert das er nur gewisse Zellen bearbeiten darf und da würde es sich schön machen eben über das Makro die Daten zu senden... schade.
Aber Ich danke Ihnen noch mal für Ihre Vorschläge.
Natürlich kannst du ein eigenes Makro erstellen.
Due benötigst auf jeden Fall ein VBA-Projekt, externe verweise auf die ADO-Blibliothek und eben ein Verbindung (ODBC) und Update-Statement zur Übertragung.
Mein Tool kannst du soweit vorkonfigurieren (Zellbezügen, Ziellib) und die Automatik auch per VBA starten.
Mhh habe dein Appz getestet. Ist so mal gar nicht schlecht! Nur ist mein Problem das ich, so denke ich, das Programm nur ein mal benötige und dann so schnell nicht mehr. Könnstest du mir ein ein paar Tipps geben dann doch ein eigenes Makro zu schreiben. In Bezug auf die Verweise und dem Update-Statement... ist wohl doch ein wenig zu hoch für mich.(bin erst seit knapp 1/2 Jahr mit der AS400 beschäfftigt...
Da frage ich mich doch, was denn teurer ist, deine Arbeitszeit, mehrere Tage Entwicklung und Test oder einmalig €750,-- für unbegrenzte Anwendung ?
Wenn ich dir hier Programmiertipps gebe, wie man eine SQL-Anwendung macht, sprengt das den Rahmen des Forums und ich mache mich arbeitslos.
Mhh schade. Ich wollte mal was lernen... aber ich verstehe dich! Muss ich noch ein wenig Googlen und basteln und mal sehen ob ich es mir zurecht stückeln kann...
Ich danke aber trotzdem für die Unterstützung!!
Insoweit kannst du das Forum hier schon nutzen.
Suche mal nach MSADO, Connect, Command usw.
Hier die einfache Version:
- VBA-Editor
- Extras->Verweise->Microsoft ActiveX DataObjects 2.8 einbinden
Neues Modul erstellen
Public sub MyMacro()
dim myConnect as new ADODB.Connection
dim myCommand as new ADODB.Command
MyConnect.Connection = "DSN=MyDsn"
MyConenct.Properties("User")="MYUSER"
MyConenct.Properties("Password")="MYPASS"
MyConnect.Open
MyCommand.Commandtext = "update mylib.myfile set f1=?, f2=? where k1=? and k2=?"
set MyCommand.ActiveConnection = MyConnect
MyCommand(0) = ActiveSheet.Range("A1").Value
MyCommand(1) = ActiveSheet.Range("B1").Value
MyCommand(2) = ActiveSheet.Range("C1").Value
MyCommand(3) = ActiveSheet.Range("D1").Value
MyCommand.Execute
end sub
Der DSN-Name "MyDsn" muss über Systemsteuerung->Verwaltung->ODBC-Quellen noch eingerichtet werden.
Dies ist nur ein Grundgerüst und muss natürlich von dir noch wesentlich angepasst werden.