顧客の名前に基づいて一連の情報を顧客の対応するブックにコピーするマクロを作成しようとしています。たとえば、ABC Industriesという顧客がいる場合は、その行をABC Industriesのワークブックに新しい行にコピーする必要があります。条件付きで別のブックに名前に基づいて行をコピーします。
おかげ
顧客の名前に基づいて一連の情報を顧客の対応するブックにコピーするマクロを作成しようとしています。たとえば、ABC Industriesという顧客がいる場合は、その行をABC Industriesのワークブックに新しい行にコピーする必要があります。条件付きで別のブックに名前に基づいて行をコピーします。
おかげ
私は寛大で、あなたはどこから始めれば分からないと仮定するつもりです。
この回答のすべての情報は、過去2〜3ヶ月の質問と回答を調べることで見つけることができます。特にexcel-vba
というタグの下に、このサイトに関する多くの関連情報があります。あなたが試みたことを証明する小さな、具体的な質問をすると、より良い回答が得られます。
あなたが提案していることは良いことではありません。複数のワークブックにまたがってデータを複製しています。保証ワークブックはまもなく絶好のステップです。
以下のコードを試してみてください。データが1回だけ表示されるようにブックをリンクすることを検討してください。また、同じデータを非常に異なる視点で見たい場合は、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
私はこれで十分です。私が最初に言ったように、あなたは一般的な助けより多くを提供する前に、もっと具体的にする必要があります。
ああ、そうだ。私は実際に間違った言葉を実際に使用しました。私は、ワークブックではなく、適切な顧客ワークシートに情報を取得しようとしています。 – user1128795
データを複製することは、これまでどこに置いても良い考えではありません。誰かが1つのコピーを更新するのは簡単ですが、他のコピーは更新しない方が簡単です。私はあなたに多くの顧客がいないことを願っています。私は40のワークシートを持つワークブックで作業しており、ナビゲートすることは非常に困難です。理論的な制限はワークブックごとに255のワークシートだと私は思う。元のコードをそのまま残し、ワークシートを見つけるためのコードを追加しました。 –
役に立たなかったことを投稿できますか? –