Excel VBA将工作表复制到未打开的工作簿中的现有工作表

时间:2018-04-11 16:30:06

标签: excel-vba vba excel

这里的VBA新手。

我记录了包含的代码,以便从源工作簿中复制工作表并将其粘贴到另一个打开的工作簿的工作表中。

它有效,但我试图做的是; 触发宏 复制工作表 开放目的地工作簿 粘贴数据 关闭原始工作簿 结束目标工作簿但不同的工作表。

extension ViewController : MKMapViewDelegate {

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?{

        guard !(annotation is MKUserLocation) else { return nil }
        let reuseId = "pin"
        var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
        if pinView == nil {
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        }
        pinView?.pinTintColor = UIColor.orange
        pinView?.canShowCallout = true
        let smallSquare = CGSize(width: 30, height: 30)
        let button = UIButton(frame: CGRect(origin: CGPoint.zero, size: smallSquare))
        button.setBackgroundImage(UIImage(named: "car"), for: .normal)
        button.addTarget(self, action: #selector(ViewController.getDirections), for: .touchUpInside)
        pinView?.leftCalloutAccessoryView = button

        return pinView
    }
}

感谢您接受一些教育!

1 个答案:

答案 0 :(得分:0)

我相信您必须打开其他工作簿,粘贴,然后关闭:

Sub Button5_Click()

    'a variable to hold our other workbook
    Dim otherwb as Workbook

    'open other workbook assign it to variable
    Set otherwb = Application.Workbooks.Open("Missing Data Template (concept1).xlsx")

    'Copypasta
    Sheets("DataSet").Cells.Copy Destination:=otherwb.Sheets("Report").Range("A1")

    'save and Close other workbook         
    otherwb.Close(true)   

End Sub

您也会注意到我已取消所有.Select.Active类型代码。因为选择是人类所做的事情,所以VBA中的.Select内容真的没必要。代码只需知道要获取什么以及放在何处。触摸.select.activate实际上有时仅在末尾用于将光标/选择设置在运行代码的人的特定点(例如,如果您想确保一旦运行该代码,表格("数据集")。范​​围(" A1")单元格被选中。