2016-09-16 44 views
-1

我有几百个excel工作簿,都具有完全相同的格式和结构。我需要预习每个文件要由后处理:Excel宏 - 另存为制表符分隔

  1. 删除一行,
  2. 添加三列
  3. 添加占位符文本中的一列(这将在以后通过文件名以代替脚本)
  4. 将文件另存为与其原始文件名分隔的制表符(制表符分隔更改的目的是我希望使用此格式,因此我可以用文件名替换#3中的占位符文本)

理想情况下,我可以打开所有需要运行此工作簿的工作簿,并在每个工作簿上运行宏,并将每个文件的原始名称作为制表符分隔的文件保存,并对1-3中所做的所有更改进行保存。

我一直对这个代码获得一个语法错误:

Sub Macro4_eggplant() 

    Dim newname as string 
    newname = ThisWorkbook.FullName 
    Rows("1:1").Select 
    Selection.Delete Shift:=xlUp 
    Columns("C:E").Select 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
    Range("C2").Select 
    ActiveCell.FormulaR1C1 = "Filename.xls" 
    Range("C2").Select 
    Selection.AutoFill Destination:=Range("Table4[Column1]") 
    Range("Table4[Column1]").Select 
    Range("D5").Select 

    ActiveWorkbook.SaveAs Filename:= _ 
     "/Users/matthewhughes/Desktop/" "newname" ".txt" _ 
     , FileFormat:=xlText, CreateBackup:=False 
End Sub 
+0

' “/用户/ matthewhughes /桌面/” &NEWNAME& “.TXT” _' – Comintern

回答

0

ThisWorkbook.FullName将返回包含您的宏工作簿的完全合格的文件名。您的以下代码(在修复语法错误之后,即Desktop/" "newname" ".txt"应该是Desktop/" & newname & ".txt")只需要基本文件名(即没有路径和扩展名),并且可能应该是指ActiveWorkbook而不是宏工作簿。

Sub Macro4_eggplant() 

    Dim newname as String 
    With ActiveSheet 
     newname = Left(.Parent.Name, InstrRev(.Parent.Name, ".") - 1) 
     .Rows(1).Delete Shift:=xlUp 
     .Columns("C:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
     .Range("C2").FormulaR1C1 = "Filename.xls" ' or = .Parent.Name ? 
     .Range("C2").AutoFill Destination:=.Range("Table4[Column1]") 

     .Parent.SaveAs Filename:= "/Users/matthewhughes/Desktop/" & newname & ".txt", _ 
         FileFormat:=xlText, _ 
         CreateBackup:=False 
    End With 
End Sub 

(我假设表4某处。)

+0

感谢您的解释。我似乎仍然收到错误,但是:“运行时错误”1004“: 无法访问'filename.txt'。”用[filename]作为新创建的文件的名称 – Mhughes

+0

@Mhughes目录'/ Users/matthewhughes/Desktop'存在吗? (如果您尝试将文件保存到不存在的目录中,则会出现您描述的错误,因为当我在创建临时目录时尝试运行代码但在输入目录时犯了错误时,我发现了困难的方式)运行的操作系统是否需要将驱动器盘符指定为路径的一部分(.eg我使用“D:\ Data \ Temp \ 20160917_1314”作为我的路径)? – YowE3K

+0

我发现错误!文件名需要FileName :) – Mhughes

相关问题