Excel精英培训网

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

[已解决]求助:模拟插入对话框:把插入图片对话框的“插入”功能改成“”复制功能

[复制链接]
发表于 2013-5-2 11:33 | 显示全部楼层 |阅读模式
本帖最后由 事后诸葛亮 于 2013-5-2 11:34 编辑

QQ截图20130502112900.jpg

上图是在EXCEL中 插入图片功能时所显示的窗口。

我想:
用VBA模拟出一个插入图片(或文件)的窗口来,
当我选择了照片时,文件名称栏自动填充。
点击 “插入” 按钮时,执行复制动作,把所选择的照片,复制到“C:\照片”目录下。
谢谢了。


最佳答案
2013-5-2 12:38
  1. Sub 按钮1_Click()
  2.     Dim srcFile$, DstFile$
  3.     Dim strDstPath$
  4.    
  5.     strDstPath = "C:\照片"

  6.     On Error GoTo ErrorCheck:
  7.     With Application.FileDialog(msoFileDialogFilePicker)
  8.         .Filters.Add "图像文件", "*.jpeg;*.jpg;*.png"
  9.         .AllowMultiSelect = False
  10.         .Show
  11.         If .SelectedItems.Count > 0 Then
  12.             srcFile = .SelectedItems(1)
  13.             DstFile = Mid(srcFile, InStrRev(srcFile, "") + 1)
  14.             DstFile = Left(DstFile, InStrRev(DstFile, ".") - 1) & "-复制" & Mid(DstFile, InStrRev(DstFile, "."))
  15.             Range("a1").Value = srcFile
  16.             FileCopy srcFile, strDstPath & DstFile
  17.             MsgBox "源文件:" & srcFile & vbCrLf & vbCrLf & _
  18.                    "目标文件:" & strDstPath & DstFile, vbInformation
  19.             Exit Sub
  20.         End If
  21.     End With
  22. ErrorCheck:
  23.     MsgBox Err.Number & vbCrLf & _
  24.             Err.Description, vbCritical
  25. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-2 11:34 | 显示全部楼层
代码中调用一个打开对话框,再对文件做复制操作。
回复

使用道具 举报

 楼主| 发表于 2013-5-2 11:35 | 显示全部楼层
hwc2ycy 发表于 2013-5-2 11:34
代码中调用一个打开对话框,再对文件做复制操作。

原理 明白,不会写代码呀。我目前的水平是 大体可以看明白代码,也能简单修改,但自己写 水平不够。
请帮忙给写一下吧,谢谢了。

回复

使用道具 举报

发表于 2013-5-2 11:44 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-5-2 11:46 编辑
  1.     Dim srcFile$, DstFile$
  2.     With Application.FileDialog(msoFileDialogFilePicker)
  3.         .Filters.Add "图像文件", "*.jpeg;*.jpg;*.png"
  4.         .AllowMultiSelect = False
  5.         .Show
  6.         If .SelectedItems.Count > 0 Then
  7.             srcFile = .SelectedItems(1)
  8.             DstFile = Mid(srcFile, InStrRev(srcFile, "") + 1)
  9.             FileCopy srcfile, "C:\照片" & DstFile
  10.         End If
  11.     End With
复制代码
回复

使用道具 举报

发表于 2013-5-2 11:46 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-5-2 11:51 编辑
  1.     Dim srcFile$, DstFile$
  2.     On Error GoTo ErrorCheck:
  3.     With Application.FileDialog(msoFileDialogFilePicker)
  4.         .Filters.Add "图像文件", "*.jpeg;*.jpg;*.png"
  5.         .AllowMultiSelect = False
  6.         .Show
  7.         If .SelectedItems.Count > 0 Then
  8.             srcFile = .SelectedItems(1)
  9.             DstFile = Mid(srcFile, InStrRev(srcFile, "") + 1)
  10.             FileCopy srcFile, "C:\照片" & DstFile
  11.             MsgBox srcFile & " 复制完成"
  12.             Exit Sub
  13.         End If
  14.     End With
  15. ErrorCheck:
  16.     MsgBox Err.Number & vbCrLf & _
  17.             Err.Description, vbCritical
复制代码
回复

使用道具 举报

发表于 2013-5-2 11:50 | 显示全部楼层
在WIN7下,小心会有文件权限的问题。
上面冒号有误。
  1. Sub 按钮1_Click()
  2.     Dim srcFile$, DstFile$
  3.     On Error GoTo ErrorCheck:
  4.     With Application.FileDialog(msoFileDialogFilePicker)
  5.         .Filters.Add "图像文件", "*.jpeg;*.jpg;*.png"
  6.         .AllowMultiSelect = False
  7.         .Show
  8.         If .SelectedItems.Count > 0 Then
  9.             srcFile = .SelectedItems(1)
  10.             DstFile = Mid(srcFile, InStrRev(srcFile, "") + 1)
  11.             FileCopy srcFile, "c:\照片" & DstFile
  12.             MsgBox srcFile & " 复制完成"
  13.             Exit Sub
  14.         End If
  15.     End With
  16. ErrorCheck:
  17.     MsgBox Err.Number & vbCrLf & _
  18.             Err.Description, vbCritical
  19. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-2 11:53 | 显示全部楼层
原来还担心文件名中空格的问题,测试,没问题。
回复

使用道具 举报

 楼主| 发表于 2013-5-2 12:05 | 显示全部楼层
hwc2ycy 发表于 2013-5-2 11:50
在WIN7下,小心会有文件权限的问题。
上面冒号有误。

谢谢,完美运行。

提高点:
问题1:我如何将 该文件名同时输入 range("A1")单元格呢。文件名怎么表示?带格式的文件名和不带格式的文件名各怎么表示?。

问题2:我如何重命名呢?就是把“照片1.jpg”复制到“C:\照片”后,成为“照片1-复制.jpg”呢?
并且把“照片1-复制.jpg”文件名同时输入 range("A1")单元格,带格式的文件名和不带格式的文件名各怎么表示?

两个问题 能否分别给我解决一下,因为我这次碰到你这个高手了,我想在解决问题的情况下,进一步学习一下。谢谢你了。[em27]
回复

使用道具 举报

发表于 2013-5-2 12:38 | 显示全部楼层    本楼为最佳答案   
  1. Sub 按钮1_Click()
  2.     Dim srcFile$, DstFile$
  3.     Dim strDstPath$
  4.    
  5.     strDstPath = "C:\照片"

  6.     On Error GoTo ErrorCheck:
  7.     With Application.FileDialog(msoFileDialogFilePicker)
  8.         .Filters.Add "图像文件", "*.jpeg;*.jpg;*.png"
  9.         .AllowMultiSelect = False
  10.         .Show
  11.         If .SelectedItems.Count > 0 Then
  12.             srcFile = .SelectedItems(1)
  13.             DstFile = Mid(srcFile, InStrRev(srcFile, "") + 1)
  14.             DstFile = Left(DstFile, InStrRev(DstFile, ".") - 1) & "-复制" & Mid(DstFile, InStrRev(DstFile, "."))
  15.             Range("a1").Value = srcFile
  16.             FileCopy srcFile, strDstPath & DstFile
  17.             MsgBox "源文件:" & srcFile & vbCrLf & vbCrLf & _
  18.                    "目标文件:" & strDstPath & DstFile, vbInformation
  19.             Exit Sub
  20.         End If
  21.     End With
  22. ErrorCheck:
  23.     MsgBox Err.Number & vbCrLf & _
  24.             Err.Description, vbCritical
  25. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
事后诸葛亮 + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-2 13:54 | 显示全部楼层
hwc2ycy 发表于 2013-5-2 12:38

谢谢,高手。谢谢了。基本看明白了。我再细研究一下。呵呵
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 14:53 , Processed in 0.324337 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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