-1

基本的に、workbook1のセルをworkbook2にリンクしていますが、スプレッドシート全体でそれを行うためのコードは何ですか?以下に示すように、私の欠点は明確に説明されていません。workbook2からworkbook1のセルの値を割り当てています。

Sub Macro2() 
    Windows("workbook2.xlsx").Activate 
    Windows("workbook1.xlsx").Activate 
    ActiveCell.FormulaR1C1 = _ 
       "='[workbook2.xlsx]workbook1'!R18C1" 
    Range("A19").Select 
    ActiveCell.FormulaR1C1 = _
        "='[workbook2.xlsx]workbook1'!R19C1" 
    Range("A20").Select 
    ......... 
End Sub 

A9からA120、E9からE120、F9からF120の範囲でそれを行うための最速の方法は何だろうと思っていました。

4

2 に答える 2

1

このコードは、すべてのワークシートのすべてのセルをリンクします。

Sub LinkSheets()
    Dim ws As Worksheet

    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False

    For Each ws In Worksheets
        ws.UsedRange.FormulaR1C1 = "='[workbook2.xlsx]" & ws.Name & "'!RC"
    Next

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

1つのワークシートから特定のセルのみをリンクする場合は、次のコードを試してください。

Sub LinkRange()
    Workbooks("workbook1.xlsx").Worksheets("Sheet1"). _
        Range("A9:A120,E9:E120,F9:F120").FormulaR1C1= _
        "='[workbook2.xlsx]Sheet1'!RC"
End Sub
于 2013-02-16T21:45:10.190 に答える
0
Sub CopyPasteEntries()
 Dim i, g, h As Integer
 Sheets("Sheet1").Select
 Range("A1").EntireRow.Copy
 Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteAll
 i = 2
 Sheets("Sheet1").Select
  Do Until IsEmpty(Cells(i, 1))  
  i = i + 1        
  Loop
  g = i - 1
  h = 2
  For i = 2 To g 
 Sheets("Sheet1").Select
  If Cells(i, 1).Value <> "Created" Then
   Cells(i, 1).EntireRow.Copy
 Sheets("Sheet2").Select
   Cells(h, 1).Select
 ActiveCell.PasteSpecial xlPasteAll
 h = h + 1
 End If     
  Next
 Application.CutCopyMode = False
 End Sub
于 2014-05-05T22:14:58.263 に答える