2013-08-18 22 views
1

我写了一个简单的宏,用于将所有工作簿保存为单独的CSV文件。 这适用于我的本地机器(英文Lang),适用于* D:\ MyFolder *等路径。我的宏在将Excel工作簿另存为日语的CSV时出现错误1004

但是,当我在另一台启用了日语的Windows机器上尝试使用相同的宏时,我得到了SaveAS方法的1004错误。

d文件路径:¥MyFolder文件¥

下面是我的代码导致错误:

pathSeperator = Application.PathSeparator

strPath = InputBox("Enter EXISTING Directory path like d:\someDirectoryName, d:", , , 1000)

SaveToDirectory = strPath & pathSeperator & "csv" & pathSeperator 
If Dir(strPath & pathSeperator & "csv", vbDirectory) = "" Then 

fso.CreateFolder SaveToDirectory 
Else 

fso.DeleteFolder strPath & pathSeperator & "csv" 
fso.CreateFolder SaveToDirectory 

End If 

For Each WS In ThisWorkbook.Worksheets 
    newName = WS.Name & "-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Time, "hhmmss") 
    WS.Copy 
    ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSVMSDOS, Local:=True 
    ActiveWorkbook.Close Savechanges:=False 
Next 
+0

你能还包括其中'SaveToDirectory'声明,并设置密码? –

+0

添加代码请检查 –

回答

1

在日语机器上,您是否尝试将Visual Basic编辑器中的字体更改为日文字体?

这可以通过工具 - >选项 - >格式选项卡完成。

编辑22/08/13

跳槽的一点,但我读过,在ASCII日元字符是一样的英语语言机/字符内,因此使用CHR(92 )应该可以在两者中工作。在一台英语机器上,它会在日本机器上显示出来,它会有日元符号。一个简单的测试就是在日本机器上运行下面的宏,看看会发生什么。

Sub TestSeperator() 

MsgBox Chr(92) 

End Sub 

如果是这种情况,那么你需要做类似下面的那些变化:

SaveToDirectory = strPath & Chr(92) & "csv" & Chr(92) 
If Dir(strPath & Chr(92) & "csv", vbDirectory) = "" Then 

fso.CreateFolder SaveToDirectory 
Else 

fso.DeleteFolder strPath & chr(92) & "csv" 
fso.CreateFolder SaveToDirectory 
+0

我会尝试一下,但这将如何帮助解决问题。实际上数据全部是英文,只是它的机器上会使用日语的peorsons。 我怀疑日语中的Seperator'¥'导致错误,但我不知道如何解决这个问题。 –

+0

我在考虑如果VBE没有使用日文字体,那么VBE可能与¥字符有问题 –

+0

谢谢格雷厄姆(92) –

0

我已经尝试了你的代码,我的英语语言的机器上,并成功地当我输入包含最后一个“\”的目录路径时会引发1004错误我修改了代码,以便它添加路径分隔符,如果它不存在并且代码的其余部分假定它已经在strP中ATH。

pathSeperator = Application.PathSeparator 

strPath = InputBox("Enter EXISTING Directory path like d:\someDirectoryName, d:", , , 1000) 
Set fso = New FileSystemObject 

If Right(strPath, 1) <> pathSeperator Then 'added if clause 
    strPath = strPath & pathSeperator 
End If 

SaveToDirectory = strPath & "csv" & pathSeperator 'Removed one pathSeperator 
If Dir(strPath & pathSeperator & "csv", vbDirectory) = "" Then 

fso.CreateFolder SaveToDirectory 
Else 

fso.DeleteFolder strPath & "csv" 'Removed one pathSeperator 
fso.CreateFolder SaveToDirectory 

End If 

For Each WS In ThisWorkbook.Worksheets 
    newName = WS.Name & "-" & Format(Date, "yyyy-mm-dd") & "-" & Format(Time, "hhmmss") 
    WS.Copy 
    ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSVMSDOS, Local:=True 
    ActiveWorkbook.Close Savechanges:=False 
Next 
+0

感谢格雷厄姆,正如你所提到的,最初的代码工作时没有提及“/”。在将文件保存为日文路径时,我遇到了问题eG D:¥MyFolder在日文中给我1004,但是同样的D:/ MyFolder在英文版中工作。 –

相关问题