Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 22-06-2007, 14:38   #1
~ZeRO sTrEsS~
Senior Member
 
L'Avatar di ~ZeRO sTrEsS~
 
Iscritto dal: Nov 2002
Città: Mission world: Napoles, Milan, Madrid, Paris, London, Now AMSTERDAM!!!!! yahoooo!!! Next stop: California, Tnx TNS-NIPO!!
Messaggi: 2150
[Visual basic] codice per excel chi mi aiuta?

ciao ragazzi, mi servirebbe un piacere enorme, Devo creare un bottone in un file excel che quando premuto crea dei file di Testo in determinate con il contenuto di 4 fogli di un file excell, una specie di repot in file txt, sinceramente non mi importa la formattazione mi serve solo portare quello che c'é in questi 4 fogli in un file txt. ho trovato questo codice sul sito della microsoft per fare ció che voglio, ma funziona solo per un foglio...

http://support.microsoft.com/kb/635038/it

Quote:


Sub file_testo()
Dim start As Range
Dim fine As Range

n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE")
n = n & ".txt"
Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8)
Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8)
colonna_inizio = Range(start.Address).Column
riga_inizio = Range(start.Address).Row
colonna_fine = Range(fine.Address).Column
riga_fine = Range(fine.Address).Row
Open n For Output As #1
For y = riga_inizio To riga_fine
For i = colonna_inizio To colonna_fine
valore = Cells(y, i).Value
If i = colonna_fine Then
valore = valore & Chr(13)
Else
valore = valore & ";"
End If
Print #1, valore;
Next i
Next y
Close #1
End Sub

Il separatore dei campi, puo` essere personalizzato con la seguente riga di
codice:

valore = valore & ";"

al posto del ";", si puo` inserire qualunque altro separatore.

Qualcuno mi saprebbe aiutare? Altra cosa che mi chiedevo é se era possibile implementare anche del codice che dovrebbe creare un file a parte con una piccola parte del primo foglio solo nel momento in cui la casella X é piena...

non so se mi sono spiegato caso mai non capite cerco di spiegarmi meglio!

Grazie a tutti in anticipo!
__________________
La libertá sopratutto di parola é un lusso che non ci si puo' permettere in italia, per la strada come su internet.
~ZeRO sTrEsS~ è offline  
Old 23-06-2007, 13:35   #2
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Devi eseguire il codice da te postato per ogni foglio che vuoi salvare.
Ad esempio se vuoi salvare tutti i fogli di una cartella di lavoro in un unico file puoi fare così:
Codice:
Sub file_testo()
    Dim start As Range
    Dim fine As Range
    Dim Foglio  As Worksheet
    Dim strNomeDefault As String
    Dim strIntestazione As String
    Dim f As Integer
    
    'Imposta il nome di default del file
    strNomeDefault = "Prova"
    
    n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE", , strNomeDefault)
    n = n & ".txt"

    f = FreeFile
    Open n For Output As #f

    ' Per ogni foglio nella cartella di lavoro corrente...
    For Each Foglio In ActiveWorkbook.Worksheets
    
        ' Attiva il foglio
        Foglio.Activate
        
        Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8, Title:=Foglio.Name)
        Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8, Title:=Foglio.Name)
        colonna_inizio = Range(start.Address).Column
        riga_inizio = Range(start.Address).Row
        colonna_fine = Range(fine.Address).Column
        riga_fine = Range(fine.Address).Row
        
        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & "]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
        
    Next
    
    Close #f
End Sub
Per quanto riguarda la seconda domanda puoi crearti una nuova funzione:
Codice:
Sub file_testo_parte()
    Dim Foglio As Worksheet
    Dim iRiga As Integer
    Dim iCol As Integer
    Dim strIntestazione As String
    Dim f As Integer
    
    ' Foglio contenente la cella da controllare
    Set Foglio = ActiveWorkbook.Worksheets("foglio1")
    
    ' Coordinate della cella da controllare
    iRiga = 5
    iCol = 3
    
    ' Se la cella non è vuota...
    If (Foglio.Cells(iRiga, iCol).Value <> "") Then
        ' ...salva parte del foglio
        
        'Imposta il nome del file
        n = "File_parte" & ".txt"
    
        ' Coordinate della cella inizio
        colonna_inizio = 1
        riga_inizio = 1
        ' Coordinate della cella fine
        colonna_fine = 3
        riga_fine = 3
        
        f = FreeFile
        Open n For Output As #f

        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & " Parziale ]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
            
        Close #f
    End If
      
End Sub
Ovviamente il tutto può essere ottimizzato in base alle tue esigenze.
Se hai problemi chiedi pure.
uReverendo è offline  
Old 24-06-2007, 16:52   #3
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Ho ricevuto il tuo pvt e ho fatto un po' di modifiche.
Codice:
Sub SalvaComeTXT()
    Dim Interv As Range
    Dim strIntestazione As String
    Dim strFile As String
    Dim strFileParte As String
    
    ' Visualizza la finestra di dialogo "Salva" e recupera il nome del file
    strFile = DlgSalva
    
    If (strFile <> "") Then
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:D6 del Foglio1
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio1").Range("A1:D6")
        strIntestazione = "[Foglio1]" & vbCrLf
        SalvaRange strFile, False, strIntestazione, Interv
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:F20 del Foglio2
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio2").Range("A1:F20")
        strIntestazione = "[Foglio2]" & vbCrLf
        SalvaRange strFile, True, strIntestazione, Interv
        ' -------------------------------------------------------
        '
        '
        ' ... Continua per tutti i fogli che vuoi salvare ...
        '
        '
        ' Se la cella "A5" del Foglio1 ha del testo...
        If (Worksheets("Foglio1").Range("A5").Value <> "") Then
            ' ...salva parte del foglio nel file strFileParte
            
            ' Toglie l'estensione al nome del file
            strFileParte = Left(strFile, Len(strFile) - 4)
            ' Aggiunge un suffisso e rimette l'estensione
            strFileParte = strFileParte & "_parte.txt"
            
            ' Es. Se strFile = "c:\salvataggio.txt" allora
            ' strFileParte sarà uguale a "c:\salvataggio_parte.txt"
            
            Set Interv = Worksheets("Foglio1").Range("A1:B2")
            strIntestazione = "[Foglio1_parte]" & vbCrLf
            SalvaRange strFileParte, False, strIntestazione, Interv
            ' -------------------------------------------------------
        End If
    End If
    
End Sub

Private Function DlgSalva()
    Dim dlg As New CommonDialog
    Dim strFile As String
    
    ' Imposta le opzioni della finestra di dialogo
    dlg.DialogTitle = "Salva fogli come file di testo"
    dlg.Filter = "File di testo (*.txt)|*.txt"
    
    ' Visualizza la finestra di dialogo
    dlg.ShowSave
    
    ' Recupera il file selezionato
    strFile = dlg.Filename
    
    ' Se non si è premuto "annulla"...
    If (strFile <> "") Then
        ' ...restituisce il nome e il percorso del file
        DlgSalva = strFile
        Exit Function
    End If
    
    ' Se si è premuto "annulla" restituisce una stringa vuota
    DlgSalva = ""
End Function

Private Sub SalvaRange(ByVal strFile As String, ByVal blnAggiungi As Boolean, ByVal strIntestazione As String, ByRef Interv As Range)
    ' -------------------------------------------------------------------
    '  DESCRIZIONE: Salva su file un intervallo di celle.
    ' -------------------------------------------------------------------
    '  INPUT:
    ' -------------------------------------------------------------------
    '  strFile ->   Nome del file in cui salvare i dati.
    '               Se il file non esiste verrà creato.
    '               Se esiste verrà sovrascritto o i dati verranno
    '               aggiunti a seconda del valore di blnAggiungi.
    '
    '  blnAggiungi->Se TRUE: il dati verranno aggiunti al file
    '               Se FALSE: il file verrà sovrascritto
    '
    '  strIntestazione -> Intestazione da stampare nel file.
    '                     Se non si vuole intestazione passare ""
    '
    '  Interv    -> Intervallo da stampare
    ' -------------------------------------------------------------------
    
    Dim f As Integer
    Dim r As Integer
    Dim c As Integer
    
    On Error GoTo Errore
    
    ' Recupera un numero di file libero
    f = FreeFile
    
    If (blnAggiungi) Then
        ' Apre il file aggiungendo i dati alla fine
        Open strFile For Append As #f
    Else
        ' Se il file esiste...
        If (Dir(strFile) <> "") Then
            ' ...chiede conferma prima di sovrascriverlo
            Risp = MsgBox("Il file " & strFile & " già esiste lo vuoi sovrascrivere?", vbYesNo + vbQuestion, "Attenzione!")
            If (Risp = vbNo) Then
                ' Non si vuole sovrascrivere il file: ESCI!!!
                Exit Sub
            End If
        End If

        ' Apre il file sovrascriverlo
        Open strFile For Output As #f
    End If
    
    If (strIntestazione <> "") Then
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
    End If
    
    ' Scrive il valore di ogni cella nel file
    For r = 1 To Interv.Rows.Count
        For c = 1 To Interv.Columns.Count
            valore = Interv.Cells(r, c).Value
            If c = Interv.Columns.Count Then
                valore = valore & vbCrLf
            Else
                valore = valore & ";"
            End If
            Print #f, valore;
        Next
    Next
    
    ' Chiude il file
    Close #f
    
    Exit Sub
    
' Gestisce eventuali errori
Errore:
    Dim strMsg As String
    strMsg = "Si è verificato un errore durante il salvataggio del file." & vbCrLf & "Errore Numero: " & Err.Number & vbCrLf & "Descrizione: " & Err.Description
    MsgBox strMsg, vbCritical
End Sub
Per farlo funzionare correttamente devi aggiungere un riferimento a "Microsoft Common Dialog Control 6.0" (da VBA: menu Strumenti\Riferimenti e seleziona la voce che ti ho detto. Se non la trovi, clicca su sfoglia e seleziona il file COMDLG32.OCX nella cartella system32)
uReverendo è offline  
 Discussione Chiusa


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Ricarica delle auto elettriche in 3 minu...
Lucid presenta Gravity Touring, il SUV e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v