Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Macro Excel VBA

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    20

    Macro Excel VBA

    Salve, ho una macro vba in Excel che prende dei dati da un altro file Excel (Book1.xls) all'apertura.
    E' la seguente:

    codice:
    Sub GetOK()
     Application.ScreenUpdating = False
     Application.DisplayAlerts = False
     Workbooks.Open Filename:="C:\Users\G\Desktop\Book1.xls", ReadOnly:=False
     Workbooks("Book1.xls").Sheets("Sheet1").Activate
     dato = ActiveSheet.Cells(8, 8)
     Workbooks("file.xls").Activate
     ActiveSheet.Cells(1, 1) = dato
     Windows("Book1.xls").Close
    End Sub

    Se la eseguo funziona ma non funziona più se la inserisco in ThisWorkbook nella sub (che dovrebbe farla partire un automatico all'apertura del file):

    codice:
    Sub Workbook_open()
    ...
    End Sub

    Come mai?
    Ultima modifica di LeleFT; 06-07-2015 a 09:20 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Tutto le versioni di VB (compreso VBA) vengono trattate nel forum "Visual Basic e .NET Framework".

    Sposto.

    Ho anche aggiunti i tag CODE: quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [/CODE] così rimane indentato e mantiene la formattazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Io farei qualcosa tipo:
    codice:
    Sub GetOK()
    Dim mFile As Excel.Application, oBook As Excel.Workbook, oSheet As Excel.Worksheet
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Set mFile = New Excel.Application
    mFileName = "C:\Users\G\Desktop\Book1.xls"
    
    Set oBook = mFile.Workbooks.Open(mFileName)
    dato = oBook.Sheets("Sheet1").Cells(8, 8)
    'Non lo hai detto, ma suppongo che "file.xls" sia il workbook dal quale parte la macro, quindi:
    ThisWorkbook.Sheets("Nome foglio").Cells(1, 1) = dato 'Inserisci il corretto nome foglio
    'Non usare ActiveSheet potresti modificare dati sul foglio sbagliato. Usa il nome del foglio
    oBook.Close saveChanges:=True ' salvi il file aperto (se serve)
    'azzeri le variabili e chiudi l'istanza excel aperta
    Set oSheet = Nothing
    Set oBook = Nothing
    mFile.Quit
    Set mFile = Nothing
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.