2017-03-27 93 views
1

正如你在下面看到的,我已经使用fileName作为字符串变量,它在URL中使用。 当我运行代码时,出现错误,提示 '运行时错误'-2147217376(80041020) 系统找不到指定的对象。' 实际上,我想将.cg文件中的数据复制到Excel中。 任何替代方法也可以。 请帮忙。是否可以在Excel VBA中使用字符串变量作为URL?

“我的代码

Sub ImportCG() 

Dim directory As String, fileName As String 

    directory = "D:\CG FILE" 
    fileName = Dir(directory & "*.cg??") 

ActiveWorkbook.Worksheets.Add 
    ActiveWorkbook.XmlImport Url:= _ 
     "D:\CG FILE\filename" _ 
     , ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1") 

    'Add CG_List 
    Set NewSheet = Sheets.Add(Type:=xlWorksheet) 
    ActiveSheet.Name = "CG_List" 

    'Copy contents to Component Type List 
    Columns("D:D").Select 
    Selection.Copy 
    Sheets("ComponentTypeList").Select 
    Columns("A:A").Select 
    ActiveSheet.Paste 
    Sheets("CG_List").Select 
    ActiveWindow.ScrollColumn = 2 
    ActiveWindow.ScrollColumn = 3 
    Columns("G:G").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("ComponentTypeList").Select 
    Columns("B:B").Select 
    ActiveSheet.Paste 
    Range("B15").Select 

End Sub 

回答

1

"D:\CG FILE\" & filename你需要连接的2

+0

您好好友感谢您的答复,但串联是在这一步完成fileName = Dir(目录&“* .cg ??”) –

2

目录变量和URL需要一些修正

Sub ImportCG() 

Dim directory As String, fileName As String 

    directory = "D:\CG FILE\" 
    fileName = Dir(directory & "*.cg??") 

ActiveWorkbook.Worksheets.Add 
    ActiveWorkbook.XmlImport Url:= _ 
     directory & filename _ 
     , ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1") 

    'Add CG_List 
    Set NewSheet = Sheets.Add(Type:=xlWorksheet) 
    ActiveSheet.Name = "CG_List" 

    'Copy contents to Component Type List 
    Columns("D:D").Select 
    Selection.Copy 
    Sheets("ComponentTypeList").Select 
    Columns("A:A").Select 
    ActiveSheet.Paste 
    Sheets("CG_List").Select 
    ActiveWindow.ScrollColumn = 2 
    ActiveWindow.ScrollColumn = 3 
    Columns("G:G").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("ComponentTypeList").Select 
    Columns("B:B").Select 
    ActiveSheet.Paste 
    Range("B15").Select 

End Sub 
+0

你好巴迪谢谢你的解决方案,它的工作就像它想要的那样。 –

相关问题