2016-01-13 29 views
1

我想创建我的电子表格单元格,将做几件事情:在在Excel单元格中打开文件夹,创建文件夹,如果它不存在

  1. 打开一个文件夹基于值从两个细胞一排
  2. 创建一个从上面两个小区的文件夹,如果不存在
  3. 它只有当我点击它,该行

目前,我使用超链接公式链接到该文件夹​​的工作,我手动cr eate。我有一个明确的想法,即链接到一个批处理文件,该文件从分析的数据打开/创建文件夹。我尝试了很长一段时间,但一直没有能够从excel中获取数据到批处理文件。

无论如何要做到这一点?以我描述的方式还是使用VBA?

我的实际电子表格有更多的列和行,但希望下面的图像说明我如何链接到文件夹布局。

enter image description here

基本上,我要点击“打开”该行,并把它从B2和C2和开放的数据/ C语言创建一个文件夹:\新建文件夹\ B2 \ C2(例C :\ New Folder \ 2015 \ Folder 0001)。

下面是我使用Excel中目前试图做到这一点的超级链接公式:

=HYPERLINK("C:\New folder\new.bat "&B2&" "&C2,"Open") 

我得到一个“无法打开指定文件”的错误。如果我删除单元格数据,它将打开该程序,但没有数据,我无法创建必要的文件夹。

下面是批处理文件我写的打开/创建文件夹:

new.bat 2015 Folder 0001 

任何方向:

@echo off 

set dir="C:\New folder\%1\%2" 

if not exist %dir% mkdir %dir% 

start "" %dir% 

这适用于它自己罚款的命令行使用以下运行时或帮助将不胜感激。预先感谢。

+0

我猜'C:\ New folder \ new.bat'中的_space_会造成麻烦;请尝试与不包含任何空格的文件夹相同... – aschipfl

+0

新文件夹中的空间不是问题。我可以像输入它一样运行它,但是当试图从单元格中添加信息时(例如new.bat 2015文件夹001),不能运行它。谢谢。 – jdbodine

回答

0

我不确定你的细胞里有什么。但你可以从这样的值中建立一条路径

Dim ws As Excel.Worksheet 
Set ws = ActiveWorkbook.Sheets("Sheet1") 

Dim szPath as string 
szPath = ws.Range("B1").Value & "\" & ws.Range("C1").Value 

打开一个文件夹
要打开,您可以使用ShellExecute的一个文件夹。在你所有的代码中声明这个。高于所有潜艇和功能。

Private Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" _ 
    (ByVal hwnd As Long, _ 
    ByVal lpOperation As String, _ 
    ByVal lpFile As String, _ 
    ByVal lpParameters As String, _ 
    ByVal lpDirectory As String, _ 
    ByVal nShowCmd As Long) As Long 

然后你就可以把它的路径

ShellExecute 0, "open", "C:\Temp", 0, 0, 1 
    'or send it the value build from the cells 
    ShellExecute 0, "open", szPath , 0, 0, 1 

你也可以打开的文件,这样

创建文件
如果你想创建的文件就可以这样做。

Dim fs As FileSystemObject 
Set fs = New FileSystemObject 

'Create a text file 
Set ts = fs.CreateTextFile("C:\Temp\test.txt", True, False) 
'or using the path from the cells 
Set ts = fs.CreateTextFile(szPath & "\text.txt", True, False) 

创建文件夹
最后一点,你可以创建文件夹。

fs.CreateFolder ("C:\Temp\SomeNewDir") 
'or using the path from the cells 
fs.CreateFolder (szPath & "\SomeNewDir") 
0

解决这个问题的最佳方法可能是使用VBA并且不使用shell脚本。 假设你的三个单元格是A1,A2和A3。你可以添加一个按钮到你的工作表并分配一个这样的宏:

Sub btn1_click() 
Dim dir as String 
Dim fso As Object 
dir = Range("A1").Value & "\" & Range("A2").Value & Range("A3").Value 
Set fso = CreateObject("scripting.filesystemobject") 
If Not fso.folderexists(dir) Then 
    fso.createfolder (dir) 
End If 
    Call Shell("explorer.exe" & " " & dir, vbNormalFocus) 
End Sub 
相关问题