Newsgroup: it.comp.lang.visual-basic
Titolo: Aprire un file XLS dalle risorse

Ciao a tutti,
oggi mi sono imbattuto in un problema...
devo poter caricare un file xls, aprire Excell e poterlo gestire da codice.
Per la gestione non � un problema, il file riesco ad aprirlo correttamente 
se nel programma gli dico di caricarmi il file xls da una data directory ma 
ho la necessit� di dover caricare tale file dalle risorse del programma.
Per caricarlo dalla directory ho usato tale codice:
***************************************************************************************************************
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oExcel.Visible = True
        ' oExcel.Workbooks.OpenText("Z:\Maschere documenti\Elenco 
Documenti.xls", , , , -4142, , True)
        oExcel.Workbooks.OpenText(My.Settings.elenco_documenti_xls, , , 
, -4142, , True)
        oBook = oExcel
        oSheet = oBook.Worksheets(1)
***************************************************************************************************************
per caricarlo dalle risorse ho provado ad utilizzare:
oExcel.Workbooks.OpenText("Resources\elenco_documenti.xls", , , , -4142, , 
True)
ma non ne vuole sapere di trovare il file (ovviamente correttamente inserito 
nelle risorse
come potrei fare?
Grazie 

 ha scritto nel messaggio 
news:h8dfe4$3p1$1...@news.eternal-september.org...


 ha scritto nel messaggio 
news:h8noaa$31q$1...@news.eternal-september.org...

Non ho capito molto di quel codice.
Per aprire un file di excel io farei cos�:
Public Sub CaricaFile()
   Dim xlApp As Excel.Application
   Dim xlBook As Excel.Workbook
   Dim xlSheet As Excel.Worksheet
   Dim NomeFile As String
   NomeFile = "Z:\Maschere documenti\Elenco Documenti.xls" ' se questo � il 
percorso!!
   Set xlApp = CreateObject("Excel.Application")
   xlApp.Visible = True
   Set xlBook = xlApp.Workbooks.Open.Workbooks.Open(NomeFile)
   Set xlSheet = xlBook.Worksheets("Foglio1")
   ' fai quello che vuoi...
   xlBook.Close
   xlApp.Visible = False
   Set xlSheet = Nothing
   Set xlBook = Nothing
   Set xlApp = Nothing
End Sub
Caricare dalle "risorse" non so cosa significhi: se � un file di excel � sul 
disco no?
Basta dare alla routine il suo percorso!
Ma io sono inesperto e forse non so quello che serve sapere per capire il 
problema.
Ciao,
E. 

problema.
 ;-)
--
ciao
  Stefano

 ha scritto nel messaggio 
news:gq9va5lkj0huqbr2d...@4ax.com...

Ecco, adesso almeno il problema � chiaro, anche se la soluzione (se esiste) 
� ancora nell'ombra.
Da quella guida sembra si possano estrarre dai files .res solo alcuni tipi 
di dati... mah!
Grazie comunque!! E' per me una scoperta interessantissima! :-)

 - Mostra testo citato -
Son stato zitto finora....
la soluzione non è nell'ombra...non capisco se non la vedi o se vuoi
la pappa scodellata!
La soluzione è questa....
nel file risorse (anche nella variante MINIMA che supporta vb6) puoi
mettere delle risorse personalizzate.
Poniamo sia il pdf della licenza d'uso....io prendo e lo memorizzo nel
file res come risorsa personalizzata
Non credere che il pdf venga memorizzato "come pdf"...viene
memorizzato come matrice di byte(s)...viene letto e memorizzato li!
Come lo leggo???
Lo rileggo con LoadResData....ma LoadResData mi restituisce una
MATRICE di byte non il pdf!
Questa matrice la salvo come file pdf in una directory temporanea
scrivendo un file byte per byte e dandogli estensione pdf ...a questo
punto posso visualizzarlo tranquillamente richiamandolo nella mia
applicazione o lanciandolo con una shellexecute!
Quindi hai 2 problemi da risolvere:
a) Capire come leggere una risorsa con LaodResData
b) Capire come scrivere un file byte per byte
Adesso hai tutti gli elementi per risolvere il tuo problema!

 la pappa scodellata!
Ahem Wodka, non per fare il puntiglioso, ma plinius (a cui stai
rispondendo) non � l'OP. :-P
Nicola

 Wodka40[Google] ha scritto:
A nicò....non per darti del cecato eh....
ma secondo google plinius ha scritto
(cito)
"..Ecco, adesso almeno il problema è chiaro, anche se la soluzione (se
esiste)
è ancora nell'ombra.
Da quella guida sembra si possano estrarre dai files .res solo alcuni
tipi
di dati... mah!
Grazie comunque!! E' per me una scoperta interessantissima! :-) .."
Quindi....
o Plinius non ne sà nulla come Bobbio
o Plinius è un altro nick di Bobbio
o Google gruppi ha ciccato "chi cita chi"
cmq vada...l'info sembra servire ad amb-e-due!
o no???
:)

 Wodka40[Google] ha scritto:
A nic�....non per darti del cecato eh....
ma secondo google plinius ha scritto
(cito)
"..Ecco, adesso almeno il problema � chiaro, anche se la soluzione (se
esiste)
� ancora nell'ombra.
Da quella guida sembra si possano estrarre dai files .res solo alcuni
tipi
di dati... mah!
Grazie comunque!! E' per me una scoperta interessantissima! :-) .."
Quindi....
o Plinius non ne s� nulla come Bobbio
o Plinius � un altro nick di Bobbio
o Google gruppi ha ciccato "chi cita chi"
cmq vada...l'info sembra servire ad amb-e-due!
o no???
:)
Ehi Wodka!
Non per darti del maleducato, ma...
1) E' evidente che hai risposto pensando di parlare con Riccardo Bobbio. E' 
stato evidente per me, per Nicola Ottomano e per chiunque altro abbia letto.
2) Piuttosto che farti notare l'errore qui sul NG, per discrezione ti ho 
inviato una email dal tono scherzoso per dirtelo.
Eccola:
""Mah...  una wodka di troppo, forse? :-))
""Hai quotato me credendo di quotare chi ha posto la domanda (Riccardo 
Bobbio).
""Sono stato io a ringraziare SB per aver postato i links sui files *.res 
che
""sono andato a subito a guardare in quanto ne ignoravo l'esistenza e l'uso.
""Dopo averli letti, per�, ero rimasto comunque perplesso quanto alla
""possibilit� di risolvere il problema dell'autore del 3D per il fatto che 
mi
""pareva d'aver capito che la funzione LoadResData funziona solo per
""dimensioni fino a 64 Kb.
""E, se � cos�, il suo file *.xls (che certamente supera questa dimensione)
""come lo estrae dal file di risorse?
""Forse � possibile ma io non riesco a vedere una soluzione che, se esiste,
""non � certo banale!
""Se, dopo aver letto i primi 64 Kb, rieseguo la funzione ottengo nuovamente 
i
""primi 64 Kb e non i successivi.
""O non � cos�?
... ma non hai creduto opportuno rispondermi.
3) L'email che ti ho mandato proviene da un indirizzo, diverso da quello 
usato per il NG, che � formato dal mio nome e cognome. Orbene cosa deduci tu 
da questo? Che io sarei un alter ego di Bobbio! Ma bene! E sulla base di 
quali elementi lo diresti? Non sar� che cerchi solo di evitare la necessit� 
di dire che hai preso una cantonata? Che onta sarebbe, vero?
4) Che io ne sappia poco, questo � certo: � l'unico punto sul quale hai 
ragione! Ma il NG non mi risulta sia riservato agli esperti ed � normale che 
ci siano anche appassionati alle prime armi, o no?
5) Capisco l'avversione per chi, piuttosto che cercare autonomamente di 
approfondire e cavarsela per quanto possibile da soli, trova pi� comodo 
chiedere sul NG: su questo sono d'accordo. Ma io non appartengo a questa 
categoria, come si evince dal fatto che (ancorch� il problema non fosse mio 
e per puro spirito di conoscenza) sono andato immediatamente e leggere i 
links postati da SB, del ch� l'ho anche ringraziato.
6) Da ultimo, nel merito tecnico, sei sicuro di quello che hai detto, visto 
che alle mie obiezioni non hai dato alcuna risposta? E, se il problema posto 
da Bobbio ha una soluzione, � davvero cos� ovvia e banale da darti modo di 
irridere chi eventualmente non la conoscesse?
Ciao Wodka, buonanotte! 

 Ciao Wodka, buonanotte!
...ah compresa di vaffa di contro risposta alle tue assurde (per me
ovvio) obiezioni
stay tuned ...se vuoi....
altrimenti...
arrangiati!

 ha scritto nel messaggio 
news:3433a360-31dc-4d2e...@g1g2000vbr.googlegroups.com...

"ti posto"????
Guarda che "a me" non devi postare propio nulla!!
Se vuoi postarla sul NG, padronissimo, ma la richiesta di aiuto non � mia, 
ed io non ho alcuna necessit� di avere quella risposta, men che meno da te.
Ah... il vaffa non lo ricambio perch� di maleducati ne basta uno!

 Grazie
A parte che più di 64k a me ...li prende...
cmq
Primo metodo:
(ho vs in inglese....in italiano vedi tu la traduzione!)
Menu Add-In --> Addin manager
VB Resorce manager...caricalo!(spuntalo)
Adesso ti appare nel menu
Clicca sulla relativa icona e fatti un nuovo resource file.....clicca
su add custom resource....ed inserisci il tuo file ...io ho inserito
un file di powerpoint da 2 mega e rotti...
SALVA IL FILE RISORSE
Poi vai su un form qualsiasi
piazza un bottone e dentro scrivi
Private Sub Command1_Click()
Dim bData() As Byte
Dim iFile As Integer
bData = LoadResData(102, "CUSTOM")
iFile = FreeFile
Open "c:\testres.ppt" For Binary Access Write As iFile
Put #iFile, , bData
Close iFile
MsgBox "FATTO"
End Sub
se premi il pulsante...ti estrae la risorsa con il path e con il nome
che vuoi....nello specifico in c:\testres.ppt
A me funziona!...senza tante palle!
MA SE VOLESI FARE UNA COSA PIU' CARINA E PROFESSIONALE?
Bene allora devi usare un programmino chiamato Resource Compiler...che
hai già! Te lo da microsoft...nei meandri del cd di installazione c'è
anche RC.exe!
Se hai Visual studio dovreb$eb stare in una di queste dir
C:\Programmi\Microsoft Visual Studio\VB98\Wizards\
oppure
C:\Programmi\Microsoft Visual Studio\Common\MSDev98\Bin
altrimenti cercalo...da qualche parte c'è! (se è una installazione di
vb tarocca...eh beh!...senti il tuo pusher o affidati a San Google)
...con RC puoi COMPILARE UN FILE DI RISORSE...
mi sono preso il notepad (il blocco note)
...ho scritto un unica riga (tanto è per spiegarti come fare)
101 PDF PRELOAD c:\CorsiInformatica\Excel\TabellePivot.pdf
e salvato come prova.rc
101 è il numero della risorsa
PDF è il nome dlla categoria...il bello è che ora non sei più limitato
ai nomi di vb ...io volevo inserire un pdf? non l'ho chiamata CUSTOM
la risorsa...ma logicamnete (con un incredibile sforzo di fantasia)
PDF!!!
PRELOAD carica immediatamente la risorsa...alternativa LOADONCALL che
sarebbe anche il default...carica la risorsa quando serve non prima!
poi c'è il path completo della risorsa...perchè il compilatore la deve
caricare!
Adesso si compila
chiudi VB altrimenti potrebbe non scrivere nulla
apri il prompt di MSdos (start-> programmi-> Accessori--> Prompt dei
comandi)
spostati dove hai salvato il file prova.rc (se sei lungimirante è la
solita cartella del tuo programma...almeno non dissemini l'hd di
file!)
digita
RC prova.rc
lui ti genera
prova.res....guarda quanto è grande....contiene la tua risorsa!
per leggerlo cambia leggermente il codice di sopra
Private Sub Command1_Click()
Dim bData() As Byte
Dim iFile As Integer
bData = LoadResData(101, "PDF")
iFile = FreeFile
Open "c:\testres.pdf" For Binary Access Write As iFile
Put #iFile, , bData
Close iFile
MsgBox "FATTO"
End Sub
la risorsa è la 101
la categoria non è custom ma pdf
per il resto continua a funzionare tutto
RC ha MOLTI altri parametri
li trovi con RC /?
una mini guida di quello che ho detto la trovi anche qui (anche se è
roba vecchia)
http://www.vbaccelerator.com/codelib/article/usingrc.htm
Saluti e buon lavoro....
però ci potevi arrivare anche da solo eh!

 Guarda che "a me" non devi postare propio nulla!!
Solo alcuni piccole constatazioni:
A) é normale avere una email sul posto di lavoro e un altra a
casa....Bobbio potrebbe postare da casa....
B) Inutile che scrivi una email....non so se arriva e se arriva non la
leggo...è su un provider argentino..manco mi ricordo la pw!
C) E' un Newsgroup non un forum....se Google lo accorpa a forum e
gruppi propri son cavoli di Google...ICLVB è un NG della gerarhia IT a
tutti gli effetti. E' consentito non mettere una email veritiera per
problemi di spam...non ci sono procedure di accreditamento in un
NG...al massimo (ma non nel caso di ICLVB) un moderatore che approva o
respinge i messaggi!
D) Se anche ho risposto a te che danno ti ho fatto???...mi sembra che
pure tu non sappia fare sta cosa...!
Addirittura sembra che tu non sappia nemmeno cosa sono le risorse!
cito
"Ecco, adesso almeno il problema è chiaro, anche se la soluzione (se
esiste)
è ancora nell'ombra.
Da quella guida sembra si possano estrarre dai files .res solo alcuni
tipi
di dati... mah!
Grazie comunque!! E' per me una scoperta interessantissima! :-) "
Può darsi che tu interagisca con VBA e non con VB6...o il tuo lavoro
non sia fare programmi..cmq sia...sta cosa non la sai fare e gli hai
risposto a bobbio una cosa fuorviante!...come ti ha fatto notare SB!
E) La soluzione è ovvia e banale...e consiste nel leggere la risorsa
con loadresdata e copiarla byte byte in un file!
Al limite non è banalissimo ficcare roba "grossa" nel file risorse o
compilarsi da soli un file risose...o ficcare un file risorse in una
dll....non è banalissimo...è facile....basterebbe cercare nei
vecchissimi post di questo ng...o ceracre un po pe san Google
F) ...certo è molto più banale ...fare incazzare qualcuno notoriamente
incazzino come me e farsi dare la pappa scodellata
Private Sub Command1_Click()
Dim bData() As Byte
Dim iFile As Integer
bData = LoadResData(102, "CUSTOM")
iFile = FreeFile
Open "c:\testres.pdf" For Binary Access Write As iFile
Put #iFile, , bData
Close iFile
MsgBox "FATTO"
End Sub
G) basta! fatto!....nessun vaffa....solo risposte precise!...mio
suscettibile amico!
........echecazzo!(sfogo rivolto a nessuno)

 ha scritto nel messaggio 
news:36360c3f-bc4f-434a...@y20g2000vbk.googlegroups.com...
...tutto quello che ha scritto..
Allora:
1) semplicemente rispondendomi non mi fai danno, certo, anzi! Ma � il tono 
di supponenza con cui lo fai che non pu� non infastidire chiunque, persino 
me che di solito ho molta pazienza!
2) Dici di avere un dubbio sul fatto che io possa NON essere un 
programmatore? E ci mancherebbe altro che lo fossi! Mi occupo di tutt'altro 
e VB � per me solo un recente interesse hobbistico. Sono infinite le cose 
che non so, ma non faccio finta di saperle: che non le so io lo dico!
3) Questo � forse, secondo te, un impedimento a partecipare alle 
discussioni? Bisogna superare un esame per accedere al NG? Ma fammi il 
piacere!
4) Nel link postato da SB avevo letto:
La terza funzione da considerare � LoadResData che carica dati di vari tipi 
(ma con una dimensione massima di 64K) da un file di risorse e restituisce 
una matrice Byte.
e che la dimendione massima fosse di 64K era normale che lo prendessi per 
buono. Bastava rispondermi che era una info sbagliata se volevi intervenire 
nella discussione. Diversamente potevi anche continuare a "stare zitto"... e 
chi ti obbligava a parlare?
5) Noto infine che non ti � scappato di dire "scusa, mi sono sbagliato". 
Bene, contento ru...

 Bene, contento ru...
E' bellissima questa cosa....la supponenza ed il tono....cavolo!...il
processo alle intenzioni!
A quando la versione di ICLVB delle "10 domande" rivolte a me ???
Rimane nel tuo brodo (modo di dire toscano: vuol dire rimani come sei)
hobbistico amico mio...incazzati con chi, anche rudemente, ti fa
conoscere qualcosa che non sapevi...bravo!
Un ng ha regole diverse....ti volevo dire che è inutile su un ng che
scrivi personalmente: l'email spesso non funziona!
Accecato dal tuo non so chè ...non hai capito un cazzo...e hai capito
che ti ho detto che NON SI PUO' fare una cosa! O che ci vuole chissà
chè per scrivere su un ng!!!......non hai capito nulla!....e mi
arrendo!....va bene....
Spesso siete (generico per tutti i postatori "spot")
frustranti....possibile che non andiate oltre le parole e non
assimilate il concetto???si vede proprio che non avete di meglio da
fare!
va bene....
niente scuse....al limite la fattura di consulenza......
buon hobby!
p.s.
Hobby costoso eh???
Comprare un VStudio e fare il downgrade...è anche un po sprecato no!!!

Wodka40[Google].close