2016-05-20 12 views
0

私はユーザーがXML文書に入れたドロップボックスファイルを持っています。私は、次のプロセスのためにコーディングしたい:XML文書からファイル情報を取得してExcelに追加

パート1:取得

が、私は、各行に日付順にファイルの数を示してExcelシートを持ちたいファイル数

パート2:コード

の特定の行の1又は0内のXML部分を確認するXML

確認

パート3:動的

Excelのドキュメントを更新するたびにExcelのドキュメントが開かれ、それはサブフォルダが最後に変更され、新しい日付が見つかった場合、新しい行を追加1,2を行いチェックします。

列日付

Bの一部を有しているがあります。私は一番上の行は以下のように用紙のラベルであるのExcelドキュメントに5列が有する

1 from folder 1

カラムは、1と2の部分があり、xmlコードは0である

Dは、XMLコードは、フォルダから1であるとパート1 + 2を持つ2

Eがフォルダから、私はjavascriptを非常によく知っている3

パート1を持っているが、私は決して持っていませんQuickbaseの外で使用しました。私はこの設定をどうやって始めることができますか?


編集1:フォルダツリーは、これまでのところ、この

../Dropbox/SharedWorkFolder/APIReports/auditreports.xlsm 
../Dropbox/SharedWorkFolder/APIReports/OrderLog/(xmls for column A+C+D)(roughly 2k files) 
../Dropbox/SharedWorkFolder/APIReports/PandA/(xmls for column A+B)(11k files) 
../Dropbox/SharedWorkFolder/APIReports/SpecificLookup/(xmls for column A+E)(130 files) 

のように見えるの明確化のために

私はExcelのドキュメンテーションを読んでいると私は私が私の理解が不足しているましたそれがどれほど多様だったのか

これまでのところ、私はファイルの内容をインポートすることができましたが、長さとXMLの内容が非常によく、特定のXMLタグが必要でした。悲しいことに、ファイル名を除いて日付はありません。ファイルごとに個別に表示されます。

1452521833783-110120160917SS110313は、の最初の文字列がトランザクション番号で、日付+時刻 "SS"で、数字列の一部がであることを意味します。

私は、Excel VBAのもののドキュメントを読み、いくつかのこと


編集2テストを継続します:

をそして私は、このコード「Excel VBA using FileSystemObject to list file last date modified」を見つけたが、それは私にエラーを与え続けますユーザー定義型は定義されていません。


編集3:これまでのところ、私はこのコード

Dim iRow 

Sub ListFiles() 
    iRow = 11 
    Call ListMyFiles(Range("C7"), Range("C8")) 
End Sub 

Sub ListMyFiles(mySourcePath, IncludeSubfolders) 
    Set MyObject = New Scripting.FileSystemObject 
    Set mySource = MyObject.GetFolder(mySourcePath) 
    On Error Resume Next 
    For Each myFile In mySource.Files 
     iCol = 2 
     Cells(iRow, iCol).Value = myFile.Path 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.Name 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.Size 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.DateLastModified 
     iRow = iRow + 1 
    Next 
    If IncludeSubfolders Then 
     For Each mySubFolder In mySource.SubFolders 
      Call ListMyFiles(mySubFolder.Path, True) 
     Next 
    End If 
End Sub 

を使用することができる午前私はまだ、すべてのXMLをループする必要があるとかかわらず、特定のノードを取得し、ああマップで問題を抱えているためXMLにはマップが割り当てられておらず、それらはすべてノードの量が異なります(ただし、必要な繰り返しは1回のみです)。

答えて

0

私はExcelのjsの統合に慣れていないかもしれませんが、これを行うためにJavascriptを使用することもできますが、私の最初の本能はVBAを介して行うことでしょう。さらに進む前に、またはVBAのソリューションは、トリックを行うだろうか?私はそれに応じてこの回答を編集します。

+0

はStackOverflowのへようこそ!質問の詳細については、回答を使用しないでください。代わりにコメントを使用する必要があります(コメントをするには十分な評判を得る必要があります) – Keiwan

+0

申し訳ありません。必要な点なしで私はどのように貢献できますか? – scardinet

+0

あなたは、より多くの情報を求めなくても答えることができる質問に目を向けることができます。あなたの回答が受け入れられ/ upvotedされると評判が上がり、すぐにコメントすることができます。我々はすべてそこにいた;)評判を得るための詳細については、参照してください:http://stackoverflow.com/help/whats-reputation – Keiwan

0

(OPの代わりに掲示)

これは私が最後に行った編集です。

  • C7:キーの細胞があることで

    ../Dropbox/SharedWorkFolder/APIReports/auditreports.xlsm 
    ../Dropbox/SharedWorkFolder/APIReports/OrderLog/(xmls for column A+C+D)(roughly 2k files) 
    ../Dropbox/SharedWorkFolder/APIReports/PandA/(xmls for column A+B)(11k files) 
    ../Dropbox/SharedWorkFolder/APIReports/SpecificLookup/(xmls for column A+E)(130 files) 
    

    :各部分は、ボタンによって行われ

  • C8から情報を取得するには、完全なディレクトリ名を持っている:サブフォルダのブール値を持っているかどうか
  • A9:=REPLACE(B9,1,SEARCH("^",SUBSTITUTE(B9,"\","^",LEN(B9)-LEN(SUBSTITUTE(B9,"\",""))-1)),"")
  • F9:別のテーブルで使用するための最後のフォルダの名前=SUBSTITUTE(SUBSTITUTE(A9,C9,""),"\","")
  • G9:=IF(H9,LEFT(C9,13),"")トランザクションID numのファイルが
  • H9すべてのテーブルにXMLデータをリンクする名であります。=IF(RIGHT(C9,3)="xml",TRUE,FALSE)私はこのコラムが必要だと思うしてもいけない、それ以上
  • I9:=IF(Table4[@FolderName]="OrderLog",TRUE,FALSE)
  • を解析するXMLのためのログファイルを取得します

この背後にあるロジックは、フォルダ内のすべてのXMLファイルをリストに取得し、特定のフォルダ名からXMLデータをインポートすることです。

マイモジュール:

Dim iRow 
Dim iTar 


Sub ListFiles() 
    iRow = 11 
    Call ListMyFiles(Range("C7"), Range("C8")) 
End Sub 

Sub ListMyFiles(mySourcePath, IncludeSubfolders) 
    Set MyObject = New Scripting.FileSystemObject 
    Set mySource = MyObject.GetFolder(mySourcePath) 
    On Error Resume Next 
    For Each myFile In mySource.Files 
     iCol = 2 
     Cells(iRow, iCol).Value = myFile.Path 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.Name 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.Size 
     iCol = iCol + 1 
     Cells(iRow, iCol).Value = myFile.DateLastModified 
     iRow = iRow + 1 
    Next 
    If IncludeSubfolders Then 
     For Each mySubFolder In mySource.SubFolders 
      Call ListMyFiles(mySubFolder.Path, True) 
     Next 
    End If 
End Sub 

Sub filldown() 

    Range("A9").Select 
    Selection.Copy 
    Range("A11").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Range("F9").Select 
    Selection.Copy 
    Range("F11").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Range("G9").Select 
    Selection.Copy 
    Range("G11").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Range("H9").Select 
    Selection.Copy 
    Range("H11").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Range("I9").Select 
    Selection.Copy 
    Range("I11").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Range("A1").Select 

End Sub 


Sub ClearTable1() 

    With Sheet1.ListObjects("Table4").ListRows 
     Do While .Count >= 1 
      .Item(1).Delete 
     Loop 
    End With 
End Sub 

Sub ClearTable2() 

    With Sheet1.ListObjects("Table2").ListRows 
     Do While .Count >= 1 
      .Item(1).Delete 
     Loop 
    End With 

End Sub 



Sub XmlImport() 
    Dim xmpCustomMap As XmlMap 
    Set xmpCustomMap = ActiveWorkbook.XmlMaps("OrderLogDataSet_Map") 
    Dim x As String 
    Dim iPath As String 
    Range("B11").Select 
    x = "True" 
    For i = 1 To Range("Table4").Rows.Count 
      iPath = Worksheets("DATA").Cells(i + 10, 2).Value 
      iTar = Worksheets("DATA").Cells(i + 10, 9).Value 
      If iTar = x Then 
      ActiveWorkbook.XmlImport URL:=iPath, ImportMap:=xmpCustomMap, Overwrite:=False 
      End If 
     ActiveCell.Offset(1, 0).Select 
     Next i 
End Sub 
関連する問題