2016-10-05 13 views
0

私は他の投稿を読んだが、私はこれもあてはまろうとしている特定のアプリケーションではまだ不安定です。データをコピーするVBAマクロ

問題:

私は現在午前ワークブックに閉じているExcelファイルからデータをコピーしようとしています、私はファイルを参照できるようにしたいし、マクロを持つことになりません。残り。

ソリューション試み:

私が言うターゲットワークブックにエラーを取得しています「アプリケーション定義またはオブジェクト定義のエラー。」これは非常に初歩的なものですが、以下は私が今までに持っていたものです。対象は、私が開いているワークブックであり、現在のものはyです。

Option Explicit 
Sub getfilename() 

Dim myFilePath As String 
Dim target As Workbook, y As Workbook 

myFilePath = Application.GetOpenFilename() 

'copying 
Set target = Workbooks.Open(myFilePath) 

target.Sheets("Sheet1").Range("R9C2:R20C2").Copy 

'pasting 
Set y = ActiveWorkbook 

y.Sheets("Adjustment").Cells("R57C4").PasteSpecial 

'close 
target.Close 

End Sub 

これはこのプロジェクトのほんの始まりです。私は本当にデータを保存して貼り付ける前にそれを少し操作する必要がありますが、まずこれを理解できるかどうかを確認しようとしていました。すべてのヘルプが高く評価されました!

+0

R1C1記法を使用して範囲を取得する特別な理由はありますか?それが問題の原因であり、解決策なぜあなたはその表記法を使用しているかによって決まります。 – Werrf

+0

Partiなぜなら、常にR1C1を使用していたからです。 – ct4242

+1

'y.Sheets(" Adjustment ")。セル(57,4).PasteSpecial'を使用してください。 – Jeeped

答えて

4

RANGEオブジェクトは、R1C1表記ではなく、A1表記を必要とします。細胞はどちらか、そこR..C ..構造を必要としませんが(行番号と列番号を使用することができますオブジェクト。

Sub getfilename() 

Dim myFilePath As String 
Dim target As Workbook, y As Workbook 

myFilePath = Application.GetOpenFilename() 

Set y = ActiveWorkbook 

'copying 
Set target = Workbooks.Open(myFilePath) 

'Here we're using the A1 notation 
target.Sheets("Sheet1").Range("B2","B9").Copy 

'Here we're using the Row & Column numbers notation 
y.Sheets("Adjustment").Cells(57, 4).PasteSpecial 

'close 
target.Close 

End Sub 

また、あなたが実際にコピーを使用する必要がありませんPasteSpecialメソッドを使用して値を複製します。このような小さなマクロではそれほど大きな取引ではありませんが、大きなプロセスでは、 target.Range( "A1"、 "値 "01")。value = source.Range( "A1"、 "A10")。値

+0

これはすばらしい、ありがとう! – ct4242

+0

Copy/PasteSpecialを使用しないもう一つの理由は、クリップボード経由で実行されることです。マクロがバックグラウンドで実行されている間にユーザーが何かをしていて、ユーザーが何かをコピー/ペーストすると、結果は悲惨です。その使用に対して推薦する+1! – YowE3K

関連する問題