Domanda

Ho due fogli di calcolo...quando uno viene modificato in un certo modo voglio eseguire una macro che modifichi il secondo in modo appropriato.Ho già isolato l'evento su cui devo agire (la modifica di qualsiasi cella in una determinata colonna), non riesco proprio a trovare informazioni concrete sull'accesso e sulla modifica di un altro foglio di calcolo (questo foglio di calcolo si trova su una LAN diversa condividi anche...l'utente ha accesso a entrambi, tuttavia).

Qualsiasi aiuto sarebbe grande.I riferimenti su come eseguire questa operazione o qualcosa di simile sono validi quanto esempi di codice concreti.

È stato utile?

Soluzione

In Excel, probabilmente scriveresti semplicemente il codice per aprire l'altro foglio di lavoro, modificarlo e quindi salvare i dati.

Vedere questo tutorial per maggiori informazioni.

Dovrò modificare il mio VBA più tardi, quindi fai finta che questo sia uno pseudocodice, ma dovrebbe assomigliare a qualcosa del tipo:

Dim xl: Set xl = CreateObject("Excel.Application")
xl.Open "\\the\share\file.xls"

Dim ws: Set ws = xl.Worksheets(1)
ws.Cells(0,1).Value = "New Value"
ws.Save

xl.Quit constSilent

Altri suggerimenti

Puoi aprire un foglio di calcolo in una singola riga:

Workbooks.Open FileName:="\\the\share\file.xls"

e fare riferimento ad essa come cartella di lavoro attiva:

Range("A1").value = "New value"

Dopo aver giocato con questo per un po', ho scoperto che lo pseudo-codice di Michael era il più vicino, ma ecco come ho fatto:

Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "\\owghome1\bennejm$\testing.xls"
xl.Sheets("Sheet1").Select

Quindi, manipola il foglio...forse così:

xl.Cells(x, y).Value = "Some text"

Quando hai finito, usa queste righe per finire:

xl.Workbooks.Close
xl.Quit

Se sono state apportate modifiche, all'utente verrà richiesto di salvare il file prima che venga chiuso.Potrebbe esserci un modo per salvare automaticamente, ma in realtà è meglio, quindi lo lascio così com'è.

Grazie per tutto l'aiuto!

Copia quanto segue nel tuo ThisWorkbook oggetto da monitorare per cambiamenti specifici.In questo caso quando si aumenta un valore numerico su un altro valore numerico.

NB:dovrai sostituire Workbook-SheetChange E Workbook-SheetSelectionChange con un trattino basso.Ex: Workbook_SheetChange E Workbook_SheetSelectionChange il carattere di sottolineatura viene sfuggito nel codice Markdown.

Option Explicit
Dim varPreviousValue As Variant ' required for IsThisMyChange() . This should be made more unique since it's in the global space.


Private Sub Workbook-SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' required for IsThisMyChange()
  IsThisMyChange Sh, Target
End Sub

Private Sub Workbook-SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  '  This implements and awful way of accessing the previous value via a global.
  '  not pretty but required for IsThisMyChange()
  varPreviousValue = Target.Cells(1, 1).Value ' NB: This is used so that if a Merged set of cells if referenced only the first cell is used
End Sub

Private Sub IsThisMyChange(Sh As Object, Target As Range)
  Dim isMyChange As Boolean
  Dim dblValue As Double
  Dim dblPreviousValue As Double

  isMyChange = False

  ' Simple catch all. If either number cant be expressed as doubles, then exit.
  On Error GoTo ErrorHandler
  dblValue = CDbl(Target.Value)
  dblPreviousValue = CDbl(varPreviousValue)
  On Error GoTo 0 ' This turns off "On Error" statements in VBA.


  If dblValue > dblPreviousValue Then
     isMyChange = True
  End If


  If isMyChange Then
    MsgBox ("You've increased the value of " & Target.Address)
  End If


  ' end of normal execution
  Exit Sub


ErrorHandler:
  ' Do nothing much.
  Exit Sub

End Sub

Se desideri modificare un'altra cartella di lavoro in base a questa, penserei prima di verificare se la cartella di lavoro è già aperta...o, ancora meglio, progettare una soluzione in grado di raggruppare tutte le modifiche ed eseguirle contemporaneamente.Cambiare continuamente un altro foglio di calcolo in base all'ascolto di questo potrebbe essere doloroso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top