Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 4.806 pregleda

Najnovija ↓

Kako preko VB-forme puniti Excel file? 03.11.2006. u 19:01 · pre 243 meseca #1
Evo o ovome je rec...
Napravim formu u VB-u i sada bih da mi ono sto se unese u TextBox1 kada se clikne da ComandButton smesti u prvu praznu celiju u nekom vec pripremljenom excel file? Da li je moguce isto tako povezati da mi on sumira te unete podatke kada kliknem na sumiraj i tu sumu mi upisuje isto u excelu ispod unetih podataka i da mi kada hocu pozove i prikaze taj excel file?
Unapred hvala.
Re: Kako preko VB-forme puniti Excel file? 03.11.2006. u 20:39 · pre 243 meseca #2
Ovo će ti pre odgovoriti neko ko se bavi sa VB, ali pošto ima sličnosti možda ti pomogne kako se to radi u Fox-u.

1. Iskopiraš DBF direktno u XLS komandom
Code:
COPY TO filename TYPE XL5

2. Uvučeš Excel u Objekat preko OLE Automation i radiš direktno u Excelu kroz Fox.

Ovo drugo više zvuči kao nešto što bi VB mogao da radi, makar preko neke ActiveX controle, mada pošto ja VB znam vrlo površno treba nam neko upućeniji da to potvrdi.

Što se tiče startovanja tog istog fajla to se u Fox-u radi preko Shell Execute
Code:
   
lcdokument="MojExcelFajl.xls"
oShe=CREATEOBJECT("_shellexecute")
oShe.shellexecute(lcdokument)
Potpis
www.subakov.com Jedini Visual FoxPro sajt u Srbiji
Re: Kako preko VB-forme puniti Excel file? 03.11.2006. u 21:40 · pre 243 meseca #3
Hvala "Zed Mc Jack", ali, ocigledno nisam obratila paznju da sam temu postavila na forumu baze, pa mi tvoj odgovor i nije bas od pomoci, barem ja ne znam kako da ga iskoristim...
Zahvaljujem "miskO" za to sto ste premestili temu i... tako.. moj problem jos uvek stoji...
Re: Kako preko VB-forme puniti Excel file? 04.11.2006. u 02:25 · pre 243 meseca
izmenjeno 3 puta, poslednji put Shadowed 05.11.2006. u 12:28
  1. Shadowed05.11.2006. u 12:28zapis iz teksta poruke
  2. krckoorascic04.11.2006. u 17:14zapis iz teksta poruke
  3. tasman_76_8204.11.2006. u 02:37zapis iz teksta poruke
#5
Pa ja sam nesto radila... medjutim nesto je tu zbrkano..
Naravno prvo sam dodala referencu na excel.
Evo koda:
Code:

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim xlwrk As Excel.Workbook
        Dim xlsht As Excel.Worksheet
        xlapp = New Excel.Application
        xlwrk = xlapp.Workbooks.Open("E:\Documents and Settings\Administrator\Desktop\Za formu.xls")
        xlsht = xlwrk.Worksheets(1)
        xlsht.Cells(2, 1) = TextBox1.Text
        xlwrk.SaveAs()
        xlwrk.Close()
    End Sub
End Class


Ali, radi on to, samo sto mi tu gde je smesten projekat napravi excel file pod istim, ali potpuno istim nazivom "Za formu", znaci, ne puni ovaj na desctop-u, vec kreira novi. Probaj.. E, sad, to je jedan problem, a drugi je: kako da napracim da kada kliknem na to dugme: Button1, on smesti to iz TextBox12 u prvu praznu celiju u A redu a iz Text Box2 u prvu praznu u B redu i da mi po kliku na dugme ocisti textBox-ove za novi unos?
Probala sam ovako:

Code:
Public Class Form1
    Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim Dest As Excel.Range
        Dim rwA As Object 'mada probala sam da stavim i Excel.Range i Integer, jer to je red i ne znam bas kako ga pravilno deklarisati
        Dim rwB As Object 'mada probala sam da stavim i Excel.Range i Integer, jer to je red i ne znam bas kako ga pravilno deklarisati
        Dim xlUp As Excel.Range
        Dim xlwrk As Excel.Workbook
        Dim xlsht As Excel.Worksheet
        xlapp = New Excel.Application
        xlwrk = xlapp.Workbooks.Open("E:\Documents and Settings\Administrator\Desktop\Za formu.xls")
        xlsht = xlwrk.Worksheets(1)
        rwA = xlwrk.Sheets(1).Range("A65536").End(xlUp).Row + 1
        Dest = xlwrk.Sheets(1).Cells(rwA, 1)
        Dest.Value = TextBox1.Text
        rwB = xlwrk.Sheets(1).Range("B65536").End(xlUp).Row + 1
        Dest = xlwrk.Sheets(1).Cells(rwB, 1)
        Dest.Value = TextBox2.Text
        xlwrk.SaveAs()
        xlwrk.Close()
    End Sub
End Class


Izbacuje ovu gresku:
"An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in system.windows.forms.dll

Additional information: Exception from HRESULT: 0x800A03EC."

Jednom recju.... Pomagaj!
Re: Kako preko VB-forme puniti Excel file? 04.11.2006. u 21:25 · pre 243 meseca #8
Što se tiče problema sa putanjom fajla, to je zato što koristiš SaveAs, a ne navodiš mu ekplicitno gde da ga snimi, pa ga zato snima u folder u kome ti se nalazi program. Ili koristi samo Save, pa će ti snimiti onaj fajl koji je otvoren ili koristi SaveAs uz navođenje kompletne putanje do otvorenog fajla.
Što se tiče traženja prve prazne ćelije u A koloni, mislim da je najjednostavnije da pokušaša ovako
Umesto
Code:
xlsht.Cells(2, 1) = TextBox1.Text

stavi
Code:
Dim celija As Range
For Each celija In xlsht.Range("A1:A65536")
If celija.Value = "" Then
celija.Value = TextBox1.Text
Exit For
End If
Next celija

I da, nek neko prebaci ovo u .Net :) Shadowed ?
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Kako preko VB-forme puniti Excel file? 04.11.2006. u 22:34 · pre 243 meseca #9
Probala sam ovo. ali mi izbacuje kod reda

Code:

For Each celija In xlsht.Range("A1:A65536")


gresku:

"An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Member not found."

Resila sam problem cuvanja, ali me zanima sada kako da recimo umesto

Code:

xlwrk.SaveAs("C:\Baza.xls")


gde mi je navedena cela putanja, napravim da mi cuva taj fajl na odredjenom mestu, ali da bude pod nazivom koji je zapravo text koji se unese u TextBox1.
Re: Kako preko VB-forme puniti Excel file? 04.11.2006. u 23:44 · pre 243 meseca #10
Evo koda koji puni prvu praznu celiju u nekom excel file sa sadrzajem iz TextBox1.

Code:

private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim xlwrk As Excel.Workbook
        Dim xlsht As Excel.Worksheet
        Dim celija As Excel.Range
        xlapp = New Excel.Application
        xlwrk = xlapp.Workbooks.Open("E:\Documents and Settings\Administrator\Desktop\11.xls")
        xlsht = xlwrk.Worksheets(1)
        For Each celija In xlwrk.Worksheets(1).Range("A1:A65536")
            If celija.Value = "" Then
                celija.Value = TextBox1.Text
                Exit For
            End If
        Next celija
        xlwrk.SaveAs("C:\111.xls")
        xlwrk.Close()
        xlsht = Nothing
        xlwrk = Nothing
        xlapp = Nothing
    End Sub


Sada mi je jos problem to da mi on sacuva to sto je uneto i isprazni TextBox1 za unos u sledecu praznu celiju..
Jer, ovako kako je, ja ako izbrisem unos iz TextBox1 i unesem nesto drugo, on mi ne puni sledecu praznu celiju, vec mi to unosi na mesto prethodnog unosa...

E, da.. Marko_L, hvala...
Re: Kako preko VB-forme puniti Excel file? 05.11.2006. u 00:35 · pre 243 meseca #11
Ovo je kod koji puni sledecu praznu celiju i brise sadrzaj iz TextBoxa i oslobadja ga za sledeci unos, pri cemu je ono sto je vec uneto sacuvano. Fora je bila u ovome:

Code:

For Each celija In xlwrk.Worksheets(1).Range("A1:A65536")
            If celija.Value = "" Then
celija.Value = TextBox1.Text
                xlwrk.Save()
                TextBox1.Text = ""
                Exit For
            End If
        Next
        xlwrk.SaveAs("C:\staro.xls")


A evo i celoga koda, mozda nekome zatreba....

Code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim xlwrk As Excel.Workbook
        Dim xlsht As Excel.Worksheet
        Dim celija As Excel.Range
        xlapp = New Excel.Application
        xlwrk = xlapp.Workbooks.Open("E:\Documents and Settings\Administrator\Desktop\1.xls")
        xlsht = xlwrk.Worksheets(1)
        For Each celija In xlwrk.Worksheets(1).Range("A1:A65536")
            If celija.Value = "" Then
                celija.Value = TextBox1.Text
                xlwrk.Save()
                TextBox1.Text = ""
                Exit For
            End If
        Next
        xlwrk.SaveAs("C:\staro.xls")
        xlwrk.Close()
        xlsht = Nothing
        xlwrk = Nothing
        xlapp = Nothing
    End Sub


Sad jos ostaje da resimo prikaz tih podataka tj pozivanje excel file-va u vidu nekih izvestaja....
Re: Kako preko VB-forme puniti Excel file? 05.11.2006. u 00:56 · pre 243 meseca #12
Da li je moguce u ovu For Each petlju staviti dve celije, odnosno kako napraviti da ako imam dva textBox-a iz njih punim paralelno kolonu A i kolonu B, tj prve prazne celije u njima?
Re: Kako preko VB-forme puniti Excel file? 05.11.2006. u 12:38 · pre 243 meseca #13
Naravno da je moguce :). Samo dodaj:
Code:

For Each celija In xlwrk.Worksheets(1).Range("B1:B65536")
    If celija.Value = "" Then
        celija.Value = TextBox1.Text
        xlwrk.Save()
        TextBox1.Text = ""
        Exit For
    End If
Next

nakon prve petlje.

Inace, kod je veoma neoptimalan. Predlazem da deo:
Code:
Dim xlapp As Excel.Application
Dim xlwrk As Excel.Workbook
Dim xlsht As Excel.Worksheet

Stavis pre funkcije koja obradjuje Click dogadjaj tako da se Excel instancira samo jednom. A zatim pri zatvaranju programa uradis
Code:
xlwrk.Close()
xlsht = Nothing
xlwrk = Nothing
xlapp = Nothing


Nakon cega ti taj isti kod nece trebati unutar Click handler-a.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kako preko VB-forme puniti Excel file? 05.11.2006. u 14:47 · pre 243 meseca #14
???? Kod koji je juce radio danas vise ne radi???? Nista mi nije jasno?
Rec je o kodu:
Code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlapp As Excel.Application
        Dim xlwrk As Excel.Workbook
        Dim xlsht As Excel.Worksheet
        Dim celija As Excel.Range
        xlapp = New Excel.Application
        xlwrk = xlapp.Workbooks.Open("E:\Documents and Settings\Administrator\Desktop\1.xls")
        xlsht = xlwrk.Worksheets(1)
        For Each celija In xlwrk.Worksheets(1).Range("A1:A65536")
            If celija.Value = "" Then
                celija.Value = TextBox1.Text
                xlwrk.Save()
                TextBox1.Text = ""
                Exit For
            End If
        Next
        xlwrk.SaveAs("C:\staro.xls")
        xlwrk.Close()
        xlsht = Nothing
        xlwrk = Nothing
        xlapp = Nothing
    End Sub



izbacuje gresku

An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll

Additional information: Cast from string "" to type 'Double' is not valid.


i pozicionira mi
Code:

If celija.Value = "" Then
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme