› Sviluppare funzionalita su Microsoft Office con VBA › problemi a creare un nuovo file con macro
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
-
AutoreArticoli
-
devo creare nuovi file con formato diverso tramite macro, con dati importati da altri file di excel tramite macro.ilproblema e che quando una cella contiene troppi caratteri fa in modo che la macro non funzioni.(almeno mi sembra sia qui il problemanello specificotramite macro in una altra cartella concateno delle celle incolonnate e lemetto tutte su una cella,a occhio i caratteri saranno 1000 possono essere anche piu o anche meno,di qui sempre tramite macrovengono copiati su una cartella di excell in una cella di qui insieme ad alre celle incolonnate vanno copiati su un file che viene appositamente creato da una macro ed ha estensione .kmlse la cella che contiene i numeri e corta funziona se invecie e lunga non funziona piu forse la macro che mi hanno insegnato non sopporta un certo num di caratteri ,non lo so provo ad allegare i file e mettere i codici spero in un aiutoho provato a cancellare parte dei valori in c 17 e funziona di qui il dubbio.comunque da xxm vanno su ftest e di qui dovrebbero andare su un file che viene creato
Allegati:
You must be logged in to view attached files.scusate la fretta mi ha fatto dimenticare il buona sera e il grazie , che non fanno mai maleciao i.k.oa parte il fatto che non ho capito bene qual'è il problema(dati introdotti in cella troppo lunghi?), ho scaricato i file che tu hai postato, ma le macro si bloccano perchè cercano un file rotte.xlx che non trovano.Ma perchè hai la necessita di mettere tutti quei dati in una cella?ciaoalbatros54sicuro? che occhio vado subito a vedere.... la macro in questione e denominata crea sul file ftest le altre vanno bene a meno che nondiano dati sbagliati al file ftestmi servono perche devo creare dei file kml che vadano su geciao e grazie della dritta non vedo dove lo stiano cercando forse ti ho mandato file sbagliati...ora controlloprova ad inserire questa macro, che si trova in un modulo del file Ftest.xlxm, in un modulo del file xxm.xlxm e la lanci, ti crea il file KML.Sub CREAKML()
Dim PercorsoFile As String
Dim NomeFile As StringPercorsoFile = "F:\KMZ\GEP\"
NomeFile = PercorsoFile & Range("A1").Value & ".KML"LR = Cells(Rows.Count, "b").End(xlUp).Row
sn = ActiveSheet.Range("B1:B" & LR)
For j = 1 To UBound(sn)
c00 = c00 & Join(Application.Index(sn, j, 0), ",") & vbCrLf
Next
CreateObject("scripting.filesystemobject").createtextfile(NomeFile).write c00End Subse lanci la macro dal file xxm.xlxm la variabile sn non viene inizializzata, perche il foglio attivo,in questo casa sheet1 nella colonna "B" non contiene dati,.ciaoalbatros54si ora ho visto, no c'entra nulla quella stringa, mi sono dimenticato di dire , il file xxm l'ho messo perche e in relazione al file ftest per mezzodella cella g1 che va copiata nel file ftest , che e quello che ha il vero problema nella macro "crea"un altro motivo per il quale l'ho messo e per confrontare la macro "crea" con la macro "salvacsv" che di fatto sono identichema creano duefile diversi. un altro fatto che ho notato e mi fa venire altri dubbi e che la seconda (salvacsv) pur essendo identica non ha preoblemi . sta di fatto che comunque entrambe lavorando allo stesso modo creano file testo( almenomi pare di capire)e poi li slvano in formato differente. non so ......se lanci la macro dal file xxm.xlxm la variabile sn non viene inizializzata, perche il foglio attivo,in questo casa sheet1 nella colonna “B” non contiene dati,.infatti, a parte che io nella mia somaraggine mai ci sarei arrivato, ma in realta la macro crea che e identica a quella che hai postato turisiede in ftest ed essendo lanciata dal medesimo considera attivo sn quindi c'e inizializzazione almeno credo....ora mi sa che il problema e grosso 😕Allora, la macro salvacsv va bene , perche lavora su di unfoglio attivo che contiene dei dati nella colonna B, quindi inizializzala varibile sn, quando lanci la macro dal foglio FTEST, è attivo lo sheet1 di questo file, e la riga di codicesn = ActiveSheet.Range("B1:B" & LR)non viene inizializzata, perchè non contiene dati.aspetta , vado con calma. la macro puo essere lanciata da qualsiasi, non mi importa. forse hai capito male perche ho fatto un mucchio di prove e ho lasciato in disoordine il tutto. mi ripeto meglio, la macro deve prendere i dati dal file ftestche sono quelle stringhe testo, nella colonna c solo le celle c5,c9,c13 e quella che da problemi ricevono dati dalla macro "importadati"del file xxm dalle celle d1,e g1se lanci la macro dal file xxm.xlxm la variabile sn non viene inizializzata, perche il foglio attivo,in questo casa sheet1 nella colonna “B” non contiene dati,.mi sa che non capiscose il foglio fstest contiene la macro crea che adopero solo dopo aver attivato il foglio manualmente perche secondo te considera attivo il foglio xxm?sono io che attivo i fogli a mano e una volta attivi pigio per far partire le macrocomunque non impazzire,prova cio che ho provato io e vedi se ti da problemacreati una cartellina dove posizionare i kmlprova a mettere in c17 di ftest 3 coppie di coord(sono divise da spazi)(80.449722,47.931111 81.257778,47.373889 81.657222,47.091667) lancia la macro "crea " e vedi se va ti crea il file(se sei curioso lo trascini in ge e vedi nel globo cosa succede) poi fai la prova con una 20 di coppie le puoi creare dal file xxm o ricopiarle a mano duplicando quelle in g1e vedi che la "creakml" non va piu.ok ho visto con sicurezza dove e il problema ma non riesco a risolverlo,il problema e proprio nel numero di caratteri presenti nella cella,se ci sono piu di 10 righe copiate dentro non va con meno si e non so il perche........ora provo a cancellare carattere per carattere a vedere il num giusto.dopo non so....ho trovato il problema (forse ) sta proprio nella quantita di caratteri che accetta una colonna 255, al 256° non funziona piu la macromi ricordo che ho letto da qualche parte che modificando le variabili da long a long long si puo aumentare o mi sbaglio?prova questa macro, dovrebbe andare bene con qualsiasi lunghezza di caratteriSub CREAKML()
Dim PercorsoFile As String
Dim NomeFile As StringPercorsoFile = "F:\KMZ\GEP\"
NomeFile = PercorsoFile & Range("A1").Value & ".KML"
With Sheets("sheet1")
lr = .Cells(Rows.Count, "c").End(xlUp).Row
sn = .Range("c1:c" & lr)
For j = 1 To lr
c00 = c00 & .Cells(j, 3) & vbCrLf 'Application.Index(sn, j, 0)
Next
End With
MsgBox c00
CreateObject("scripting.filesystemobject").createtextfile(NomeFile).write c00End Sub-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
albatros54.
si funziona benissimo speriamo anche con quelli piu grandi, una precisazione , siccome non so quanto possono essere grandi , lo spazio che riceve le coordinate si muove di conseguenza al loro numero? quinndi le celle vanno giu a scalare?potresti mica spiegarmi questo comando? l'altro l'avevo capito con questo da solo ci metto un mese a capirlo ,.Cells(j, 3) & vbCrLf vuol dire che prende le celle a gruppi di 3 e poi va a capo finche non finiscono?grazzie!!!-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
i.k.o.
quinndi le celle vanno giu a scalare?
potresti mica spiegarmi questo comando?Tu non ti devi preoccupare del numero di celle che il file occupa perchè questa riga di codicelr = .Cells(Rows.Count, "c").End(xlUp).Rowdice ad excel"portati sull'ultima cella in basso della colonna "C"(nel nostro caso)End, e salendo verso l'alto(xlUp)trovami la prima cella che contiene un dato, e assegna alla variabile lr il valore della riga."In altri termini controlla tutte le celle della colonna "C" che contengono un valore è mi ritorna il numero di riga dell'ultima cella che contiene un dato,.Cells(j, 3) & vbCrLf vuol dire che prende le celle a gruppi di 3 e poi va a capo finche non finiscono?No! quel 3 indica la colonna"C", che io ho modificato, perche nella tua macro facevi riferimento alla colonna "B", che non contenava nessun dato-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
albatros54.
-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
albatros54.
be allora non avevo capito nemmeno quella di prima, avevo solo dato una mia interpretazione.in queta riga:Application.Index(sn, j, 0)
lo zero cosa sata a indicare?ti chiedo scusa ma e che vorrei imparare un pochino e capire cio che succede in una formulaho comunque scaricato qualche file da studiarmi cosi disturbero un po meno,...grazie ancorametto risolto, poi magari la domande continuo a farle ,per le risposte decidete voi... 😛non so come si mette perometto risolto, poi magari la domande continuo a farle ,per le risposte decidete voi…non so come si mette peroè una funzione ancora da implementare 😛 😛-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
albatros54.
-
Questa risposta è stata modificata 8 anni, 5 mesi fa da
-
AutoreArticoli
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
