Условно скопировать строку в другую книгу на основе имени - PullRequest
0 голосов
/ 04 января 2012

Я пытаюсь написать макрос, который будет копировать строку информации на основе имени клиента в соответствующую рабочую книгу этого клиента.Например, если у меня есть клиент по имени ABC Industries, я хочу, чтобы он скопировал эту строку в книгу ABC Industries на новой строке.

Спасибо

1 Ответ

1 голос
/ 04 января 2012

Я собираюсь быть щедрым и предположить, что вы не знаете, с чего начать.

Всю информацию в этом ответе можно найти, просмотрев вопросы и ответы за последние два или три месяца.На этом сайте много актуальной информации, особенно под тегом excel-vba.Вы получите лучшие ответы, если будете задавать небольшие конкретные вопросы, которые доказывают, что вы пытались.

То, что вы предлагаете, не является хорошей практикой.Вы дублируете данные в нескольких книгах, и я гарантирую книги скоро будут безнадежно не в порядке.

Поиграйтесь с приведенным ниже кодом, но затем подумайте о связывании книг, чтобы данные присутствовали толькоодин раз.Я также подозреваю, что Access был бы лучшим инструментом, если вы хотите очень разные представления одних и тех же данных.

Option Explicit

Sub WriteToOtherWorkbook()

  Dim PathCrnt As String
  Dim RowNext As Long
  Dim WBookOther As Workbook
  Dim WBookOtherName As String

  ' I assume all workbooks are in the same folder at the active workbook
  PathCrnt = Application.ActiveWorkbook.Path

  If Workbooks.Count > 1 Then
    ' It is easy to get into a muddle if there are multiple workbooks
    ' open at the start of a macro like this.  Avoid the problem until
    ' you understand it.
    Call MsgBox("Please close all other workbooks", vbOKOnly)
    Exit Sub
  End If

  ' I assume you know how to find the name of the relevant workbook.
  WBookOtherName = "ABC Industries.xls"

  ' Open the named workbook      
  Set WBookOther = Workbooks.Open(PathCrnt & "\" & WBookOtherName)
  With WBookOther
    ' I assume you have some system for naming the sheets in the
    ' company workbooks.
    With .Sheets("XXXXXX")

      ' If you know that the last row will have a value in, for example,
      ' column "B" use this code which is the equivalent of going to
      ' the bottom of column "B", clicking Ctrl+Up to find the last
      ' cell with a value and then adding one to that value.
      RowNext = .Cells(Rows.Count, "B").End(xlUp).Row + 1

      ' If you are not sure which column of the last row is
      ' guaranteed to contain a value, use this code.
      RowNext = .Cells.SpecialCells(xlCellTypeLastCell).Row + 1

      ' Write some values to the row
      .Cells(RowNext, 1) = "A"
      .Cells(RowNext, 2) = "B"

    End With
    .Save       ' Save the changes
    .Close      ' Close the workbook
    Set WBookOther = Nothing    ' Clear reference to workbook
  End With

End Sub

Этот код работает с таблицами, которые ищут определенное имя.

For InxWS = 1 To Worksheets.Count
  If Worksheets(InxWS).Name = "ABC Industries" Then
    Found = True
    Exit For
  EndIf
Next

If Found Then
  With Worksheets(InxWS)
    ' Add data
  End With
Else
  Call MsgBox("No worksheet for AC Industries",vbYesOK)
Endif

Надеюсь, этого достаточно, чтобы вы начали.Как я уже говорил в начале, вам нужно быть более конкретным, прежде чем кто-либо сможет предложить больше, чем просто помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...