Aktuelle Zeit: 15.10.2018 14:50

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 45 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 16.07.2007 00:18 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Ich habe im obigen Source, dank Hilfe von Kiffi, noch weitere
Funktionen wie färben von Zellen, markieren von Zellen direkt bzw. rechts
von der selektierten Zelle und Liniengitter ein bzw. ausschalten
hinzufügen können.

Ich hoffe ihr könnt es vielleicht auch gebrauchen.

Nochmals Dank an Kiffi.

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 18.07.2007 19:39 
Offline

Registriert: 10.07.2007 21:03
Wohnort: Lübeck
mk-soft hat geschrieben:
Schöne sache :allright:

Vielleicht hat jemand lust diese mit adodb und DispHelper zu realisieren.
Dann läuft es auch, ohne das Excel installiert wurde.

FF :wink:


Es wird problematisch, da ADODB nicht über die Befehlreferenz von Excel verfügt. Daher die Möglichkeit z. B. SetColor, PageSetup u.s.w. fehlen. Datenzugriff ist jedoch möglich, aber ziemlich eingeschränkt.

Ich habe die Code von Kiffi etwas modifiziert:

Code:

; example by Kiffi
;modified by eleowal

EnableExplicit

Declare DatenAendern(oRS, Feld.s, Wert.s)

Global Databasename.s = "C:\MeineDatei.xls"

XIncludeFile "adoconstants.pbi"

dhToggleExceptions(#True)

Procedure ADOX_Example_Create_New_Database_Append_Tables_And_Columns()

  If FileSize(Databasename) > 0
    If DeleteFile(Databasename) = 0
      ProcedureReturn
    EndIf
  EndIf

  Protected oCatalog.l
  Protected oTable.l
  Protected oColumn.l
  Protected ConnectionString.s
 

  ; Create the required ADOX-Object
  oCatalog = dhCreateObject("ADOX.Catalog")
  If oCatalog = 0
    MessageRequester("ADOX-Example", "Couldn't create ADOX.Catalog")
    ProcedureReturn
  EndIf

  ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Databasename + ";Extended Properties=Excel 8.0"
 


dhPutValue(oCatalog,".ActiveConnection = %T",@ConnectionString)

;die Methode Catalog.Create(....) funktioniert bei Excel nicht. Man muss zuerst mindestens
;eine Tabelle und mindestens eine Spalte anlegen.

  ; Create a new table
   oTable = dhCreateObject("ADOX.Table")

  If oTable = 0
    MessageRequester("ADOX-Example", "Couldn't create table")
    dhReleaseObject(oCatalog)
    ProcedureReturn
  EndIf

  ; give the table a name
  dhPutValue(oTable, ".Name = %T", @"TestTable")

 
;
;   ; Create an ID-Column with Autoincrement (das läuft nicht....)
   oColumn = dhCreateObject("ADOX.Column")
   dhPutValue(oColumn, ".ParentCatalog = %o", oCatalog)
   dhPutValue(oColumn, ".Name = %T", @"ID")
  dhPutValue(oColumn, ".Type = %d", #adInteger)
 
 
;   dhPutValue(oColumn, ".Properties(%T) = %b", @"Autoincrement", #True)
;
;   ; Append the new column to the table
   dhCallMethod(oTable, ".Columns.Append(%o)", oColumn)
;
;   ; Create and append some more Columns
   dhCallMethod(oTable, ".Columns.Append(%T, %d)", @"IntegerField", #adInteger)
   dhCallMethod(oTable, ".Columns.Append(%T, %d)", @"TextField",    #adVarWChar)
   dhCallMethod(oTable, ".Columns.Append(%T, %d)", @"MemoField",    #adLongVarWChar)
;
 ; Append table to catalog
 dhCallMethod(oCatalog, ".Tables.Append(%o)", oTable)
 
 
 ;andere Möglichkeit existiert auch und ist wesentlich schneller....
 Protected sql.s = "CREATE TABLE test(id int, name char(30), vorname char(30));"
 Protected oCN.l
 Protected i.l
 oCN = dhCreateObject("ADODB.Connection")

  If oCN = 0
    MessageRequester("ADOX-Example", "Couldn't create ADODB.Connection")
    ProcedureReturn
  EndIf
  If Not dhCallMethod(oCN, ".Open(%T)", @ConnectionString)
      dhCallMethod(oCN, ".Execute(%T)", @sql)
     
      For i = 1 To 100
        sql = "Insert into [test$](id, name, vorname) VALUES(" + Str(i) + ", 'Nachname " + Str(i) + "', 'Vorname " + Str(i)+ "');"
        dhCallMethod(oCN, ".Execute(%T)", @sql)
      Next
     dhCallMethod(oCN,".Close")
  EndIf
 
;
   dhReleaseObject(oColumn)
   dhReleaseObject(oTable)
   dhReleaseObject(oCatalog)
   dhReleaseObject(oCN)

  MessageRequester("ADOX-Example", "Ready. Database successfully created.")

EndProcedure

Procedure ADO_Example_Open_Existing_Table_And_Fill_In_Some_Data()

  Protected oCN.l ; Connection-Object

  Protected ConnectionString.s
  Protected SQL.s
  Protected Counter.l

  ; Connection string.
  ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Databasename + ";Extended Properties=Excel 8.0"
 

  ; Create the required ADO-Connection-Object
  oCN = dhCreateObject("ADODB.Connection")

  If oCN = 0
    MessageRequester("ADOX-Example", "Couldn't create ADODB.Connection")
    ProcedureReturn
  EndIf

  ; Open the connection.
  If Not dhCallMethod(oCN, ".Open(%T)", @ConnectionString)

    ; Insert some records.
    For Counter = 0 To 99
      SQL = "Insert Into TestTable (IntegerField, TextField, MemoField) Values (" + Str(Counter) + ", 'Text" + Str(Counter) + "', 'Memo" + Str(Counter) + "')"
      dhCallMethod(oCN, ".Execute(%T)", @SQL)
    Next

    ; Close the connection.
    dhCallMethod(oCN, ".Close")

    MessageRequester("ADOX-Example", "Ready. Database successfully filled with sample-data.")

  Else

    MessageRequester("ADOX-Example", "Couldn't open the Connection")

  EndIf

  dhReleaseObject(oCN)

EndProcedure

Procedure ADO_Example_Open_Existing_Table_And_Read_Data()

  Shared  oRS.l ; Connection-Object
  Protected oCN.l ; Connection-Object

  Protected szResponse.l

  Protected ConnectionString.s
  Protected SQL.s
  Protected EOF.l

  ; Connection string.
  ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Databasename + ";Extended Properties=Excel 8.0"
 

  ; Create the required ADO-Connection-Object
  oCN = dhCreateObject("ADODB.Connection")
  If oCN = 0
    MessageRequester("ADO", "Couldn't create Connection-Object")
    ProcedureReturn
  EndIf

  ; Open the connection.
  If Not dhCallMethod(oCN, ".Open(%T)", @ConnectionString)

    ; Retrieve some records.from Range A1:D10
   
    SQL = "Select * from [TestTable$A1:D10]"
    oRS = dhCreateObject("ADODB.Recordset")
    If oRS = 0
      MessageRequester("ADO", "Kann Recordset nicht erstellen")
      ProcedureReturn
    EndIf
    dhPutValue(oRS,".ActiveConnection = %o",oCN)
    dhPutValue(oRS,".LockType = %d", 2)
    dhPutValue(oRS,".Source = %T", @SQL)
    dhCallMethod(oRS,".Open")


    ;gehe zu Ende
     dhCallMethod(oRS,".MoveLast")
   ;
   ;mann kann die Daten aendern...
    DatenAendern(oRS, "MemoField", "Das ist die letzte Memo")
    DatenAendern(oRS, "TextField","Das ist der letzter Datensatz")
   
   
    ;gehe zu DS 5
    dhCallMethod(oRS,".MoveFirst")
    dhCallMethod(oRS,".Move %d",5)
    DatenAendern(oRS, "MemoField", "Das ist die Memo Nr. 5")
    DatenAendern(oRS, "TextField","Das ist der Text Nr. 5")
   
    ;und wieder zum Anfang
    dhCallMethod(oRS,".MoveFirst")
   ;
   ;mann kann die Daten aendern...
    DatenAendern(oRS, "MemoField", "Noch einen Wert, den ich will....")
    DatenAendern(oRS, "TextField","Hier ist mein Text...")
   
   
    Repeat

      dhGetValue("%b", @EOF, oRS, ".EOF")

      If EOF
        Break
      EndIf


      dhGetValue("%T", @szResponse, oRS, ".Fields(%T).Value", @"IntegerField")
      If szResponse : Debug "IntegerField: " + PeekS(szResponse) : EndIf
      dhFreeString(szResponse) : szResponse = 0

      dhGetValue("%T", @szResponse, oRS, ".Fields(%T).Value", @"TextField")
      If szResponse : Debug "TextField: " + PeekS(szResponse) : EndIf
      dhFreeString(szResponse) : szResponse = 0

      dhGetValue("%T", @szResponse, oRS, ".Fields(%T).Value", @"MemoField")
      If szResponse : Debug "MemoField: " + PeekS(szResponse) : EndIf
      dhFreeString(szResponse) : szResponse = 0

      Debug "-------"

      dhCallMethod(oRS, ".MoveNext")

    ForEver
   
   

    ; Close and release the recordset.
    dhCallMethod(oRS, ".Close")
    dhReleaseObject(oRS)

    ; Close and release the connection.
    dhCallMethod(oCN, ".Close")
    dhReleaseObject(oCN)

  EndIf

EndProcedure

Procedure  DatenAendern(oRS, Feld.s, Wert.s)

 
dhPutValue(oRS,".Fields(%T).Value = %T",@Feld, @Wert)
dhCallMethod(oRS,".Update")


EndProcedure

ADOX_Example_Create_New_Database_Append_Tables_And_Columns()
ADO_Example_Open_Existing_Table_And_Fill_In_Some_Data()
ADO_Example_Open_Existing_Table_And_Read_Data()

End


Ist mehr als nichts :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 28.07.2007 00:05 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Super, das mit der Datenbank :allright:

Kiffi hat mir mit seinem Beispiel für SetBorder wiedermal weiter geholfen :allright: ,
woraus ich nun zwei Funktionen für die ExcelDemo (Siehe Anfangs-Thread)
eingebaut habe (SetBorder() und. EraseBorder() ).

Damit müssten die wichtigsten Funktionen zur ferngesteuerten
Excelbearbeitung vorhanden sein ;)

Kompletter Source am Anfang vom Thread ersetzt.

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.08.2007 13:21 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Folgende Funktionen und Beispiele wurden
oben in der ExcelDemo.pb hinzugefügt!

04.08.2007

ColorOff() ; Farbige Zellen verschwinden lassen :)
MergeCells() ; Zellen verbinden bzw. Verbindung wieder aufheben
InsertRow() ; Zeile einfügen und wieder entfernen
InsertColumn();Spalte einfügen und wieder entfernen
InsertCell() ; Zelle einfügen mit verschieben nach rechts oder nach unten
DeleteCell(); Zelle entfernen mit verschieben nach links oder nach oben

04.08.2007
Procedure Pattern() ; Setzen und entfernen von Mustern in einzelne oder mehrere Zellen

Es kann durchaus sein, das Fehlermeldungen des
PureDisphelpers auftauchen, da ich wegen Excel 2007 das nicht feststellen
konnte.

Folglich müssen dann für ältere Excelversionen die entsprechenden
Konstanten bzw. Funktionsaufrufe entfernt werden, falls an dieser Stelle ein
Fehler auftaucht ;)


das nicht nachprüfen kann. Bitte schreibt mir

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.08.2007 18:01 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
eleowal hat geschrieben:
Es wird problematisch, da ADODB nicht über die Befehlreferenz von Excel verfügt. Daher die Möglichkeit z. B. SetColor, PageSetup u.s.w. fehlen. Datenzugriff ist jedoch möglich, aber ziemlich eingeschränkt.


Würde es gerne ausprobieren. Leider fehlt die Datei bzw. der Code:
Code:
XIncludeFile "adoconstants.pbi"

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
Windows 10 - 64Bit | PureBasic V5.61 & V5.3
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.08.2007 18:14 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
...\Examples\PureDispHelper\ado\adoconstants.pbi
Ist im Paket. Ansonsten befindet sich die entsprechende VB Version auch auf
Deiner Festplatte, einfach suchen.

_________________
PureBasic 5.70 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 19.0 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.08.2007 18:14 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Danke! :D

_________________
Meine PureBasic-Projekte:
EasySetup - Setups für eigene Programme erstellen
___________________________________________
Windows 10 - 64Bit | PureBasic V5.61 & V5.3
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 10.08.2007 18:21 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Thorsten1867 hat geschrieben:
Danke! :D

Bedank Dich bei Kiffi. der hat die VBS-Datei gepatcht und ist sowieso der Ado-Mann :allright:

_________________
PureBasic 5.70 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 19.0 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 17.08.2007 00:07 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
hier noch eine kleine Ergänzung zu Falkos Code:

Zeichensatz und -größe ändern

Code:
Procedure SetFont(*obj, RangeStart.s, RangeEnd.s, FontName.s, FontSize.l) ; Set font in Cells
 
  Protected Range.s = RangeStart + ":" + RangeEnd
 
  dhCallMethod(*obj, ".Range(%T).Select", @Range)
  dhPutValue  (*obj, ".Selection.Font.Name = %T", @FontName)
  dhPutValue  (*obj, ".Selection.Font.Size = %d", FontSize)
 
EndProcedure


Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 17.08.2007 00:29 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Danke Kiffi :allright:

Ich habe auch noch was mit Bilder einfügen gemacht. Nur funktioniert es
nicht mit der Zellposition. Vielleicht habt ihr ja noch eine passende Lösung
parat :roll:


Code:
Procedure PutImage(*obj, Range.s,Picture.s) ; Insert Pictures with Cellposition
  dhCallMethod(*obj,"Range(%T).Select",@Range)
  dhCallMethod(*obj,"ActiveSheet.Pictures.Insert(%T).Select",@Picture)
  dhPutValue(*obj,"ActiveSheet.Pictures.ShapeRange.Height=%d",50);Höhe Bild
  dhPutValue(*obj,"ActiveSheet.Pictures.ShapeRange.Rotation=%d",90);Bild drehen
  dhPutValue(*obj,"ActiveSheet.Pictures.ShapeRange.Left=%d",200);Bild um 200 Pixel nach rechts verschieben
  dhCallMethod(*obj,"Range(%T).Select",@"A1") ; Select Cell A1
  Delay(10000)
  dhCallMethod(*obj,"ActiveSheet.Pictures.Delete") ; Test
EndProcedure

PutImage(ExcelApp, "F1" ,"C:\MyImage\MeinBild.jpg")




Gruß, Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 45 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye