2017-04-17 4 views
0

ワークブックを開いて開いていないワークブックに貼り付けることはできますか?コピーしようとしているワークシートには合計30のワークシートが含まれています。私はファイルダイアログを開いてみましたが、時にはそれが卓越しています。卓越性を掛けて、私が欲しいことをしない方法はありますか?前もって感謝します。ワークブックを開いていないワークブックから開いたワークブックにコピー

Dim FileToOpen As String 
Application.ScreenUpdating = False 
FileToOpen = Application.GetOpenFilename _ 
(Title:="Please choose a Excel File to Open", _ 
FileFilter:="Excel Files *.(*.xlsx),xlsx") 
If VarType(FileToOpen) = vbBoolean Then 
MsgBox "No file selected", vbExclamation, "Sorry!" 
Exit Sub 
End If 
Debug.Assert VarType(FileToOpen) = vbString 
With Application.Workbooks.Open(FileToOpen) 
.Worksheets(22).UsedRange.Copy ThisWorkbook.Worksheets(2).range("A1") 
.Close 
End With 
+1

を達成するために欲しいもの収まる必要があり、それを開かずにデジタルファイルから何かをアクセスすることはできません。ただし、ユーザーが何かが開かれ、コピーされ、閉じられていることをユーザーが決して理解できないように開くことは可能です。アクセスしたいファイルの正確な位置を知っている場合は、ユーザーの介入なしにコードを開くことができます。それ以外の場所や名前がわからない場合は、FileOpenダイアログを使用します。あなたのコードを投稿してExcelのクラッシュをなぜ見てみましょうか? – Variatus

+0

こんにちは私は上記のようにコードを編集して追加しました –

+0

だから、Excelはちょうどハングすると言います。エラーメッセージはありませんか?デバッグハイライトはありませんか?おそらく、Excelが高速すぎるため、コピーが完了する前にファイルを閉じてしまうだけです。その場合は、おそらく 'ThisWorkbook.Activate'というソースファイルを閉じる前に何かしてみてください。ソースブックとターゲットブックの両方に名前を付けるようにしてください。ソースワークシートとターゲットワークシートの両方に名前を付ける - 厳密には必要ではないが、誰がボスであるかをVBAに知らせるのに適している。 – Variatus

答えて

0
Private Sub test() 
Dim app As New Excel.Application 
Dim fileName As String, copyFrom As Workbook 
app.Visible = False 
fileName = app.GetOpenFilename() 

Set copyFrom = app.Workbooks.Open(fileName) 
    MsgBox copyFrom.Sheets(1).Cells(1, 1) 

End Sub 

これはあなたが原則

+0

私は自分のコードでそれを持っています –

+0

必要に応じてコードを編集してください。これは単なるスケルトンです – Hank

関連する問題