문제

스프레드시트가 두 개 있는데...하나가 특정 방식으로 수정되면 두 번째 항목을 적절한 방식으로 수정하는 매크로 실행을 원합니다.조치를 취해야 하는 이벤트(특정 열의 셀 수정)를 이미 격리했지만 다른 스프레드시트 액세스 및 수정에 대한 구체적인 정보를 찾을 수 없는 것 같습니다(이 스프레드시트는 다른 LAN에 있습니다. 공유도...하지만 사용자는 두 가지 모두에 액세스할 수 있습니다.)

어떤 도움이라도 좋을 것입니다.이를 수행하는 방법이나 이와 유사한 것에 대한 참조는 구체적인 코드 샘플만큼 좋습니다.

도움이 되었습니까?

해결책

Excel에서는 코드를 작성하여 다른 워크시트를 열고 이를 수정한 다음 데이터를 저장하기만 하면 됩니다.

보다 이 튜토리얼 더 많은 정보를 위해서.

나중에 VBA를 편집해야 하므로 의사 코드인 것처럼 보이지만 다음과 같아야 합니다.

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

다른 팁

한 줄로 스프레드시트를 열 수 있습니다.

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

이를 활성 통합 문서라고 참조합니다.

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

한동안 이것을 가지고 놀다가 Michael의 의사 코드가 가장 가깝다는 것을 알았습니다. 그러나 제가 한 방법은 다음과 같습니다.

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

그럼 시트를 조작해 보세요...아마도 다음과 같을 것이다:

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

완료되면 다음 줄을 사용하여 마무리하세요.

xl.Workbooks.Close
xl.Quit

변경된 경우 파일을 닫기 전에 파일을 저장하라는 메시지가 사용자에게 표시됩니다.자동으로 저장하는 방법도 있겠지만 사실 이 방법이 더 좋기 때문에 이대로 놔두겠습니다.

모든 도움에 감사드립니다!

다음을 복사하세요. ThisWorkbook 특정 변경 사항을 감시하는 개체입니다.이 경우 숫자 값을 다른 숫자 값으로 늘리는 경우입니다.

참고:당신은 교체해야 할 것입니다 Workbook-SheetChange 그리고 Workbook-SheetSelectionChange 밑줄로.전: Workbook_SheetChange 그리고 Workbook_SheetSelectionChange 밑줄은 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

이를 기반으로 또 다른 통합 문서를 변경하고 싶다면 먼저 해당 통합 문서가 이미 열려 있는지 확인하는 것이 좋을 것 같습니다...또는 모든 변경 사항을 일괄 처리하고 한 번에 수행할 수 있는 솔루션을 설계하는 것이 더 좋습니다.당신이 이 스프레드시트를 듣는 것에 따라 계속해서 다른 스프레드시트를 변경하는 것은 고통스러울 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top