2016-03-16 89 views
3

这个问题是从以前的问题here一个遵循。放在哪里来源:= 65001代码

基于由@Jeeped答案,似乎解决该问题的最好办法是插入的这部分代码到宏:

Origin:=65001 

这是为了迫使我的代码导入UTF-8格式的文件。

现在的问题出现,我可以不知道如何或在哪里我的宏,将上面的代码。我有以下宏(我在网上找到 - 但不记得在哪里,所以不能得分),将大量文件导入工作簿,为每个文件创建电子表格。

Sub Extractions() 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Application.DisplayStatusBar = False 

Dim FilesToOpen 
Dim x As Integer 

    On Error GoTo ErrHandler 

    FilesToOpen = Application.GetOpenFilename _ 
     (fileFilter:="Microsoft Excel Files (*.*?), *.*?", MultiSelect:=True, Title:="Files to Import") 

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

    x = 1 
    While x <= UBound(FilesToOpen) 
     Workbooks.Open Filename:=FilesToOpen(x), Delimiter:=Chr(124) 
     Sheets().Move Before:=ThisWorkbook.Sheets _ 
      (ThisWorkbook.Sheets.Count) 
     x = x + 1 
    Wend 

ExitHandler: 
    Application.ScreenUpdating = False 
    Exit Sub 

ErrHandler: 
    MsgBox Err.Description 
    Resume ExitHandler 
    Resume 

End Sub 

有关如何解决此问题的任何建议?编辑1:

感谢@Rory的建议。经过更多调查,看起来Origin:=65001不是Workbook.Open中的有效条目。

因此,我想知道在使用上面的代码导入到MFGI时,是否有任何方法可以保留原始格式设置为UTF-8的文本文件?

+2

你会在此添加:'Workbooks.Open名:= FilesToOpen(X),分隔符:= CHR(124),产地:= 65001'。如果文件是文本,看起来应该使用'Workbooks.OpenText'。 – Rory

+0

@Rory该文件用于同时加载约40个不同的文件。其他方法一次只能打开1个文件,并为每个文件打开单独的电子表格 – Clauric

+0

'Workbooks.Open'的行为方式相同。 – Rory

回答

1

可能这会给你一个提示。

Sub Test() 
Dim FD As FileDialog 
Dim FilesToOpen 
Dim e 
Dim tmp 

Set FD = Application.FileDialog(msoFileDialogFilePicker) 

With FD 
    If .Show = -1 Then 
    appTGGL bTGGL:=False 
     For Each FilesToOpen In .SelectedItems 
      tmp = Split(Dir(FilesToOpen), ".") 
      Select Case tmp(UBound(tmp)) 'the last 
       Case "xlsx" 
        MsgBox "2007" 
        Workbooks.Open Filename:=FilesToOpen 
        Sheets().Move Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
       Case "xlsm" 
        MsgBox "2007M" 
        Workbooks.Open Filename:=FilesToOpen 
        Sheets().Move Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
       Case "xls" 
        MsgBox "2003" 
        Workbooks.Open Filename:=FilesToOpen 
        Sheets().Move Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
       Case "csv" 
        MsgBox "CSV" 
        Workbooks.Open Filename:=FilesToOpen, Delimiter:=Chr(124), Origin:=65001 
        Sheets().Move Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
       Case "txt" 
        MsgBox "TXT" 
        Workbooks.Open Filename:=FilesToOpen, Delimiter:=Chr(124), Origin:=65001 
        Sheets().Move Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
       Case Else 
        MsgBox "NO Ext/Other Ext" 
      End Select 
     Next FilesToOpen 
    appTGGL 
    Else 
     MsgBox "No Files were selected" 
    End If 
End With 

末次