【发布时间】:2016-12-08 07:02:33
【问题描述】:
源列在每个单元格中都包含一个字符串。有4000多个细胞。这些需要复制并粘贴到活动(调用宏的)工作簿的工作表中。用户应使用搜索/浏览弹出框选择源工作簿。
下面的代码做了一些接近我预期目标的事情,但是你看到的目录是静态的,这是不可接受的。用户手动选择源文件应该具有最大的灵活性。此外,我想防止每次文件夹/文件重命名/移动时文件路径都过时。有人告诉我应该使用Application.GetOpenFilename(),但是如何正确实现呢?
我对 VBA 的经验很少,我尝试修改此宏失败了,所以我想就此事征求您的意见。同样,以下代码运行良好,但不够灵活,无法实用。
编辑:问题已解决。查看最终的工作代码。
'MACRO TO READ-IN EXTERNAL EXCEL FILE FROM WHICH JOB NO.'S ARE EXTRACTED INTO USERFORM
Sub ReadDataFromCloseFile()
'IN CASE OF ERROR SEND TO ERROR FUNCTION
On Error GoTo ErrHandler
'PREVENT OPENED EXCEL SOURCE FILE FROM SHOWING TO USER
Application.ScreenUpdating = False
'OPEN SOURCE EXCEL WORKBOOK IN "READ ONLY MODE"
Dim SrcName As String
Dim src As Workbook
SrcName = Application.GetOpenFilename()
Set src = Workbooks.Open(SrcName, True, True)
'GET THE TOTAL ROWS FROM THE SOURCE WORKBOOK
Dim iTotalRows As Integer
iTotalRows = src.Worksheets("PROJECT LIST").Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Rows.Count
'COPY DATA FROM SOURCE WORKBOOK -> DESTINATION WORKBOOK
Dim iCnt As Integer '(COUNTER)
For iCnt = 1 To iTotalRows
Worksheets("Test_File_8").Range("B" & (iCnt + 1)).Formula = src.Worksheets("PROJECT LIST").Range("A" & (iCnt + 1)).Formula
Next iCnt
'CLOSE THE SOURCE WORKBOOK FILE
src.Close False 'FALSE = DONT SAVE THE SOURCE FILE
Set src = Nothing 'FLUSH DATA
'ERROR FUNCTION
ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
【问题讨论】: