0

私は比較的vbaに慣れていません。これは、アクセスを開いてブックを閉じるためのテスト マクロです。Win 7 および Win XP で Excel 2007 を使用しています。

これは正常に機能しますが、マクロを含むワークシートにしか結果を配置できません。再利用可能にするために、コメント付きのコード行を使用し、マクロを Personal.xlsb ファイルに配置しました。下付き文字が範囲外というエラーが発生します。何か助けていただければ幸いです。

Sub copyCount()
    Dim wb As Workbook
    Dim fname As String

    Application.ScreenUpdating = False
    fname = ActiveSheet.Name
    Set wb = Workbooks.Open("C:\Users\Deepak\Documents\OFFICE\FixedValues.xlsx", True, True)
     'With ActiveWorkbook.Worksheets("sheet1")
    With ThisWorkbook.Worksheets(fname)
        .Range("A1").Value = wb.Worksheets("common").Range("A1").Value
    End With
    wb.Close False
    Set wb = Nothing
    Application.ScreenUpdating = True
End Sub
4

1 に答える 1

0

編集

あなたの質問をもう一度読み返してみると、最初は誤解していました。代わりに、個人用ワークブックでこのコードを試してください。コメント化されたコードの ActiveWorkbook は、開いたファイルになるため、機能しません。両方のワークブックを変数として設定する必要があります。

Sub copyCount()
Dim wb1 As Workbook, wb2 As Workbook
Dim fname As String

Application.ScreenUpdating = False
Set wb1 = ActiveWorkbook
fname = wb1.Name
Set wb2 = Workbooks.Open("C:\Users\Deepak\Documents\OFFICE\FixedValues.xlsx", True, True)
With wb1.Worksheets("Sheet1")
'With ThisWorkbook.Worksheets(fname)
    .Range("A1") = wb2.Worksheets("common").Range("A1")
End With
wb2.Close False
Set wb2 = Nothing
Application.ScreenUpdating = True

End Sub

無関係だが楽しい情報: 実際には範囲の最後に .Value を追加する必要はありません。これは使用されるデフォルトのプロパティだからです。上で外しました。

于 2012-05-23T08:01:21.617 に答える