この問題の明白な解決策は見つかりませんでした。VBA:閉じたブックからのインポートデータ
クローズドWs.Data
からすべてのデータをアクティブCurrentWs.Data
にコピーしたいとします。どのようにすればいいのですか?
この問題の明白な解決策は見つかりませんでした。VBA:閉じたブックからのインポートデータ
クローズドWs.Data
からすべてのデータをアクティブCurrentWs.Data
にコピーしたいとします。どのようにすればいいのですか?
はADODB接続を試してみてください。
Sub copyFromWs()
Dim Cnx As ADODB.Connection
Dim fileToCopy As String
Dim SheetName As String, request_SQL As String
Dim Rst As ADODB.Recordset
fileToCopy = "C:\monClasseurBase.xls" 'here you can use something like ws.data.pathname
SheetName = "Sheet1" 'Here it's your ws.Data
Set Cnx = New ADODB.Connection
'Connection
With Cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filetocopy & _
";Extended Properties=Excel 8.0;"
.Open
End With
'Request
request_SQL= "SELECT * FROM [" & SheetName & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cnx.Execute(request_SQL)
Range("A1").CopyFromRecordset Rst
'Here for you something like currentws.Data.Range("A1").CopyFromRecordset Rst
'Close
Cnx.Close
Set Cnx = Nothing
End Sub
このリンクをクリックすると、閉じたブックからデータをコピーするのに最適です。
https://www.rondebruin.nl/win/s3/win024.htm
それとも、これを試してみてください。
Sub ImportDatafromcloseworkbook()
'Update 20150707
Dim xWb As Workbook
Dim xAddWb As Workbook
Dim xRng1 As Range
Dim xRng2 As Range
Set xWb = Application.ActiveWorkbook
xTitleId = "KutoolsforExcel"
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
Application.Workbooks.Open .SelectedItems(1)
Set xAddWb = Application.ActiveWorkbook
Set xRng1 = Application.InputBox(prompt:="Select source range", Title:=xTitleId, Default:="A1", Type:=8)
xWb.Activate
Set xRng2 = Application.InputBox(prompt:="Select destination cell", Title:=xTitleId, Default:="A1", Type:=8)
xRng1.Copy xRng2
xRng2.CurrentRegion.EntireColumn.AutoFit
xAddWb.Close False
End If
End With
End Sub
そのコードは、開いているブックからコピーし、閉じたブックではコピーしません。 – YowE3K
好奇心のちょうど - あなたは 'Ws.Data'を開き、シートをコピーしてもう一度閉じたいのですが?これには良い解決策があります。 – Vityata