我正在尝试在我的电子表格中创建一个可以执行以下操作的单元格:
目前,我使用超链接公式链接到我手动创建的文件夹。我有一个明智的想法,即链接到批处理文件,该文件从解析的数据中打开/创建文件夹。我尝试了一段时间,但无法将数据从excel传送到批处理文件。
无论如何要这样做?无论是我描述的方式还是VBA?
我的实际电子表格中有更多的列和行,但希望下面的图片说明了我希望链接到文件夹的方式。
基本上,我想点击"打开"在该行中它从B2和C2获取数据并在C:\ New Folder \ B2 \ C2中打开/创建一个文件夹(例如C:\ New Folder \ 2015 \ Folder 0001)。
以下是我目前在Excel中使用的超链接公式,试图完成此任务:
=HYPERLINK("C:\New folder\new.bat "&B2&" "&C2,"Open")
我得到一个"无法打开指定的文件"错误。如果我删除单元格数据,它将打开程序,但没有数据,我无法创建必要的文件夹。
下面是我写的用于打开/创建文件夹的批处理文件:
@echo off
set dir="C:\New folder\%1\%2"
if not exist %dir% mkdir %dir%
start "" %dir%
从命令行运行时,它可以正常工作,具有以下内容:
new.bat 2015 Folder 0001
任何方向或帮助将不胜感激。提前谢谢。
答案 0 :(得分: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")
答案 1 :(得分:0)
最好的解决方法可能是使用VBA而不使用shell脚本。 假设你的三个单元格是A1,A2和A3。您可以向工作表添加一个按钮并指定一个宏,如下所示:
SELECT * FROM table LIMIT 10 // Query
SELECT (*) FROM table LIMIT 10 // Query Count