Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2100|回复: 2

[已解决]求助VBA代码, 工作簿文件保存在工作簿目录下文件夹内的代码!!

[复制链接]
发表于 2016-7-1 15:59 | 显示全部楼层 |阅读模式
本帖最后由 daxindianqi 于 2016-7-1 16:11 编辑

各位老师:

这是一段EXCEL VBA 代码,执行后将工作簿按照不同单元格内容组合成的文件名保存到“z:\报价文件”文件夹下,现在我要求文件保存到工作簿本身所在目录下的“报价文件”文件夹内,代码该怎么样写???
  1. Dim myfilepath As String
  2. Private Sub CommandButton1_Click()
  3. Application.DisplayAlerts = False
  4. If Range("a1") = "" Or Range("f3") = "" Or Range("h3") = "" Or Range("b7") = "" Or Range("b6") = "" Then
  5.   Unload UserForm4
  6.   MsgBox "请将公司、项目、业务员、报价员信息填写完全再保存 !"
  7. Else
  8. Dim fso As Scripting.FileSystemObject
  9. Application.ScreenUpdating = False
  10.     lr = 30
  11.     lr1 = 50
  12.     With ThisWorkbook
  13.         Workbooks.Add (1)
  14.         .Sheets(2).Range("A:I").Copy
  15.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
  16.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats
  17.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
  18.         ActiveWorkbook.Sheets.Add
  19.         .Sheets(1).Range("A:H").Copy
  20.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
  21.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats
  22.         ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
  23.     End With
  24.     myFolder = "z:\报价文件"
  25.     Set fso = New Scripting.FileSystemObject
  26.     If fso.FolderExists(myFolder) Then
  27.         Call 导出数据
  28.     Else
  29.         fso.CreateFolder myFolder
  30.         Call 导出数据
  31.     End If
  32.     Set fso = Nothing
  33.     Application.ScreenUpdating = True
  34.          MsgBox "数据已被导出, " & myfilepath    '保存在D:\报价文件\...", 48, "导出提示"
  35.          Unload UserForm4
  36.     End If
  37. End Sub

  38. Sub 导出数据()
  39.     On Error Resume Next
  40.     Application.DisplayAlerts = False
  41.     Call getfilepath
  42.     ActiveWorkbook.SaveAs myfilepath
  43.     Application.DisplayAlerts = True
  44.     Application.ScreenUpdating = True
  45.     ActiveWorkbook.Open
  46. End Sub
  47. Private Sub CommandButton2_Click()
  48. On Error Resume Next
  49. Unload UserForm4
  50. End Sub

  51. Private Sub getfilepath()
  52. On Error Resume Next
  53.     Dim i%
  54.     i = 1
  55.      Do
  56.      myfilepath = "z:\报价文件\ MSGM(JS)" & "_" & Range("B2") & "_TO " & Range("B6") & "." & Range("B7") & "." & Range("G6") & " ( " & "报价" & " ) " & "_ FROM." & Range("F3") & " ( " & Range("H3") & " ) _" & Range("D2") & "_V" & i & ".00" & ".xlsx"
  57.      i = i + 1
  58.     Loop Until Not IsFileExists(myfilepath)
  59. End Sub

  60. Private Function IsFileExists(ByVal strFileName As String) As Boolean
  61. On Error Resume Next
  62.     If Dir(strFileName, 16) <> Empty Then
  63.         IsFileExists = True
  64.     Else
  65.         IsFileExists = False
  66.     End If
  67. End Function
复制代码
最佳答案
2016-7-1 16:05
本帖最后由 zjdh 于 2016-7-1 16:11 编辑

myFolder = "z:\报价文件"
改成
myFolder = ThisWorkbook.Path  &  "\报价文件"

myfilepath = "z:\报价文件\ MSGM(JS)" ......
改成
myfilepath =  ThisWorkbook.Path & "\报价文件\ MSGM(JS)" .........


MsgBox "数据已被导出, " & myfilepath    '保存在D:\报价文件\...", 48, "导出提示"
改成
MsgBox "数据已被导出, " & myfilepath  & "保存在" &  ThisWorkbook.Path &  "\报价文件\...", 48, "导出提示"
发表于 2016-7-1 16:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2016-7-1 16:11 编辑

myFolder = "z:\报价文件"
改成
myFolder = ThisWorkbook.Path  &  "\报价文件"

myfilepath = "z:\报价文件\ MSGM(JS)" ......
改成
myfilepath =  ThisWorkbook.Path & "\报价文件\ MSGM(JS)" .........


MsgBox "数据已被导出, " & myfilepath    '保存在D:\报价文件\...", 48, "导出提示"
改成
MsgBox "数据已被导出, " & myfilepath  & "保存在" &  ThisWorkbook.Path &  "\报价文件\...", 48, "导出提示"
回复

使用道具 举报

 楼主| 发表于 2016-7-1 16:10 | 显示全部楼层
zjdh 发表于 2016-7-1 16:05
myFolder = "z:\报价文件"
改成
myFolder = ThisWorkbook.Path  &  "\报价文件"

OK了  谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 19:40 , Processed in 0.273241 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表