我是一名非常新手的VBA程序员。我只能在工作之间的停工期间做到这一点。无论如何,我一直在为自己和同事制作事件跟踪器,并在我使用新功能更新它时帮助他们,我一直在尝试添加"导入"特征。
事情是每个月都有一个单独的工作表(1月到12月和另一个加班的工作表称为OT)。代码需要从正确的工作表中复制并粘贴到具有相同名称的工作表中。
但是,我无法让它工作。这就是我到目前为止所做的:'Import Incident
Sub ImportIncidents()
Dim OpenFileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim myRng As Range
Dim MyWB As Workbook
'store the current workbook in a variable
Set MyWB = ActiveWorkbook
'Select and Open workbook
OpenFileName = Application.GetOpenFilename
If OpenFileName = False Then
MsgBox ("Import Failed!")
Exit Sub
End If
Set wb = Workbooks.Open(OpenFileName, UpdateLinks:=0)
'Get data
wb.Activate
For Each ws In wb.Worksheets
Set myRng = ws.Range("A6:AV45")
myRng.Copy
MyWB.Activate
Set myRng =
wb.Activate
Next
MsgBox ("Import Complete!")
End Sub
如果有人能帮助我,这将是惊人的。我确信在我正确完成VBA书之后我能够掌握它(VBA for Dummies,啊!)但是我很难找到一个周末坐下来当我做很多加班时这样做
答案 0 :(得分:0)
您的代码对初学者来说并不坏。假设您要复制到另一个工作表中的相同范围,则只需要在for循环中使用一行。
myRng.Copy Destination:=MyWB.Worksheets(myRng.Name).Range("A6:AV45")
这将复制包括格式在内的所有内容。
答案 1 :(得分:0)
请尝试以下方法:
If OpenFileName = "False" then
我在我的机器上进行了测试,如果您将DIM OpenFileName作为String,那么如果您不选择任何内容,它会将“False”传递给OpenFileName。
PS:OpenFileName = False和OpenFileName =“False”都在我的工作上,所以有人得到了答案吗?
答案 2 :(得分:0)
道歉,我没有回应你给我的建议。所说的一切都有所帮助。
保罗,作为Variant上市是正确的方式,托马斯,""也帮助克服了错误。不幸的是,在我完成这些操作后,我遇到了400错误,因此我遇到了一些问题。
最后,我能够弄明白并且以下代码有效......以非常粗暴的方式:
'Import Incident
Sub ImportIncidents()
Dim OpenFileName As Variant
Dim wb As Workbook
Dim ws As Worksheet
Dim myRng As Range
Dim MyWB As Workbook
'store the current workbook in a variable
Set MyWB = ActiveWorkbook
'Select and Open workbook
OpenFileName = Application.GetOpenFilename
If OpenFileName = False Then
MsgBox ("Import Failed!")
Exit Sub
End If
Set wb = Workbooks.Open(OpenFileName, UpdateLinks:=0)
'Import Data
wb.Activate
Application.DisplayAlerts = False
For Each ws In wb.Worksheets
Set myRng = ws.Range("A6:AV45")
myRng.Copy Destination:=MyWB.Worksheets(myRng.Parent.Name).Range("A6:AV45")
'ActiveWorkbook.Close = False
MyWB.Activate
Next
Application.DisplayAlerts = True
MsgBox ("Import Complete!")
End Sub
这是一个很好的开始,我现在正在努力让它只通过链接到一年中几个月的for循环来浏览我想要的纸张(这就是纸张的布局方式。我不需要毕竟复制数据表可能会导致问题。)
感谢您的帮助