【问题标题】:Open XML File in same workbook as Macro在与宏相同的工作簿中打开 XML 文件
【发布时间】:2019-06-14 03:31:14
【问题描述】:

我正在编写一个宏,它将导入一些 XML 数据,然后用它做一些聪明的事情。以下代码打开 XML,但作为一个新工作簿 - 谁能建议如何将其打开到当前工作簿中?

Dim fNameAndPath As Variant

fNameAndPath = Application.GetOpenFilename(FileFilter:="XML Files (*.xml), *.xml", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub
Workbooks.Open Filename:=fNameAndPath

干杯

编辑 - 这是一些完成这项工作的代码

Sub OpenXML()
Dim FilesToOpen
Dim x As Integer
Dim wkbAll As Workbook
Dim wkbTemp As Workbook
Dim sDelimiter As String
Dim newSheet As Worksheet

On Error GoTo ErrHandler
Application.ScreenUpdating = False

sDelimiter = ","

FilesToOpen = Application.GetOpenFilename _
(FileFilter:="XML Files (*.xml), *.xml", _
MultiSelect:=True, Title:="XML File to Open")

If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "No Files were selected"
    GoTo ExitHandler
End If

For x = 1 To UBound(FilesToOpen)

    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
     'wkbTemp.Sheets(1).Copy
    wkbTemp.Sheets(1).Cells.Copy
     ' here you just want to create a new sheet and paste it to that sheet
    Set newSheet = ThisWorkbook.Sheets.Add
    With newSheet
        .Name = "Original_XML"
        .PasteSpecial
    End With
    Application.CutCopyMode = False
    wkbTemp.Close
Next x
End Sub()

【问题讨论】:

    标签: xml excel vba


    【解决方案1】:

    您可以通过这种方式将 xml 导入工作簿而无需打开它:

    ThisWorkbook.XmlImport URL:= _
        s_FilePath, ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Sheets("Sheet1").Range("A1")
    

    在您的代码中,它看起来像这样:

    Sub OpenXML()
    Dim FilesToOpen
    Dim x As Integer
    
    Dim sDelimiter As String
    Dim newSheet As Worksheet
    
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    
    sDelimiter = ","
    
    FilesToOpen = Application.GetOpenFilename _
    (FileFilter:="XML Files (*.xml), *.xml", _
    MultiSelect:=True, Title:="XML File to Open")
    
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If
    
    With ActiveWorkbook
        For x = 1 To UBound(FilesToOpen)
            Set newSheet = .Sheets.Add
            newSheet.Name = "Original_XML_" & x
            Application.DisplayAlerts = False
            .XmlImport URL:= _
                FilesToOpen(x), ImportMap:=Nothing, _
                Overwrite:=True, Destination:=newSheet.Range("A1")
            Application.DisplayAlerts = True
        Next x
    End With
    
    ExitHandler:
    ErrHandler:
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2018-11-06
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多