2016-03-16 92 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 

末次