Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何激活excel工作簿而不使用其名称或至少部分名称?提取的图纸具有动态名称_Vba_Excel - Fatal编程技术网

Vba 如何激活excel工作簿而不使用其名称或至少部分名称?提取的图纸具有动态名称

Vba 如何激活excel工作簿而不使用其名称或至少部分名称?提取的图纸具有动态名称,vba,excel,Vba,Excel,我几乎完成了从我们公司的服务器提取数据并将其粘贴到我已经创建的工作表中的代码…问题是我想从服务器打开的excel工作簿中复制数据,但问题是每次从服务器检索数据时,它的动态名称都会更改。但是,工作簿名称的初始部分没有更改,因此是否有办法仅使用未更改的名称部分激活工作簿?提取工作簿的常量部分通常以BFUK开头,然后是数字、空格和下划线,最后以.txt.xls“BFUK******.txt.xls”结尾 子测试() Set objIE=CreateObject(“InternetExplorer.Ap

我几乎完成了从我们公司的服务器提取数据并将其粘贴到我已经创建的工作表中的代码…问题是我想从服务器打开的excel工作簿中复制数据,但问题是每次从服务器检索数据时,它的动态名称都会更改。但是,工作簿名称的初始部分没有更改,因此是否有办法仅使用未更改的名称部分激活工作簿?提取工作簿的常量部分通常以BFUK开头,然后是数字、空格和下划线,最后以.txt.xls“BFUK******.txt.xls”结尾

子测试()
Set objIE=CreateObject(“InternetExplorer.Application”)
网站=“公司网站”
logSite=“/logoff.do”
与奥布杰
.Visible=True
.浏览网站
请稍等片刻。忙碌或。准备就绪状态4
多芬特
环
Set unElement=.Document.getElementsByName(“用户名”)
unElement.Item(0).Value=“用户名”
Set pwElement=.Document.getElementsByName(“密码”)
pwElement.Item(0).Value=“密码”
.文件.表格(0).提交
”“退出
请稍等片刻。忙碌或。准备就绪状态4
多芬特
环
Set expElement=.Document.getElementsByClassName(“导航操作下拉触发器js——工具提示”)
expElement(0)。单击
请稍等片刻。忙碌或。准备就绪状态4
多芬特
环
.Document.getElementById(“obb\U导出\U EXCEL”)。单击
以
application.Wait(现在+时间值(“0:00:04”))SendKeys“%O”,True
与奥布杰
.浏览日志站点
>以
Windows(“动态名称为.xls的工作表”)。激活ActiveSheet.Range(“A1:BC600”)。复制
Windows(“宏测试.xlsm”)。激活
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
[L:L]。通过选择进行选择
.NumberFormat=“一般”
.Value=.Value以结尾
端接头
我真的很需要这些人,所以我会感谢你的帮助,如果这能完成工作,我欢迎你的新想法。

这里有一页。获得文件名后,可以按如下方式进行比较:

If fileName Like "BFUK*.txt.xls" Then
    Windows(fileName) ....
   'rest of your code...
End If
它将匹配以“BFUK”开头、以“.txt.xls”结尾的文件名。之间可以是任意数量的任意字符

下面是宏示例:

Sub ListFilesMatchingPattern()

Dim objFSO, objFolder, objFile As Object
Dim i As Integer
Dim path As String
'choose folder with your Excel files
Application.FileDialog(msoFileDialogFolderPicker).Show
path = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object
Set objFolder = objFSO.GetFolder(path)
i = 1
'loops through each file in the directory and prints their names
For Each objFile In objFolder.Files
    'open the Excel file if it matches pattern
    If objFile.Name Like "BFUK*txt.xls" Then
        'in your macro, you should do work on the file here
        Workbooks.Open (path & "\" & objFile.Name)
    End If
Next objFile

End Sub
给你一页。获得文件名后,可以按如下方式进行比较:

If fileName Like "BFUK*.txt.xls" Then
    Windows(fileName) ....
   'rest of your code...
End If
它将匹配以“BFUK”开头、以“.txt.xls”结尾的文件名。之间可以是任意数量的任意字符

下面是宏示例:

Sub ListFilesMatchingPattern()

Dim objFSO, objFolder, objFile As Object
Dim i As Integer
Dim path As String
'choose folder with your Excel files
Application.FileDialog(msoFileDialogFolderPicker).Show
path = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
'Create an instance of the FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object
Set objFolder = objFSO.GetFolder(path)
i = 1
'loops through each file in the directory and prints their names
For Each objFile In objFolder.Files
    'open the Excel file if it matches pattern
    If objFile.Name Like "BFUK*txt.xls" Then
        'in your macro, you should do work on the file here
        Workbooks.Open (path & "\" & objFile.Name)
    End If
Next objFile

End Sub

@迈克尔:我找到了,终于成功了

> > Sub Tester()
> 
>    Const File_PATH As String = "C:\Users\Ali\Desktop\Ali\"
>    
> 
> Dim file As String

> 
> file = Dir$(File_PATH & "BFUK*" & ".xlsx")
> 
> If (Len(file) > 0) Then   Workbooks.Open(File_PATH & file).Activate
>       End If
> 
> End Sub

我唯一的方法是使用
SendKeys“%S”,True
将文件保存在特定文件夹中,然后上面的代码调用它

@Michal我找到了它并最终工作了

> > Sub Tester()
> 
>    Const File_PATH As String = "C:\Users\Ali\Desktop\Ali\"
>    
> 
> Dim file As String

> 
> file = Dir$(File_PATH & "BFUK*" & ".xlsx")
> 
> If (Len(file) > 0) Then   Workbooks.Open(File_PATH & file).Activate
>       End If
> 
> End Sub

我唯一的方法是使用
SendKeys“%S”,True
将文件保存在特定文件夹中,然后上面的代码调用它

谢谢@michal,但我指的是工作簿名称对不起,不是同一工作簿中的工作表。我现在编辑了我的问题,所以你可以非常感谢你,这真的很有帮助,但仍然无法与我合作。我的目标是让这段代码每小时自动运行一次,并且名称将不断变化,我将无法分辨文件名是什么,除非我亲自出现在我的工作站前,并不断修改这段代码,否则将达不到目的。你不同意吗?但是,你什么都不用做。您说过文件名可能会更改,但它将以“BFUK”开头,以“.txt.xls”结尾。这段代码将只匹配文件,文件名将匹配此模式。Turczyn再次感谢我的朋友。考虑到我是VBA新手,我确信我做错了什么,因为提供的说明仍然不起作用。我在一个单独的模块中复制了您的代码,只是为了测试它。我将工作簿保存在桌面上,并通过向其提供打开此工作簿的说明来测试您的代码,但我遇到一个错误,即没有具有我提供的名称的文件。如果此文件保存在桌面上,您能用代码演示如何打开此文件吗?非常感谢您的帮助@michalturczynThank@michal,但我指的是工作簿名称抱歉,不是同一工作簿中的工作表。我现在编辑了我的问题,所以你可以非常感谢你,这真的很有帮助,但仍然无法与我合作。我的目标是让这段代码每小时自动运行一次,并且名称将不断变化,我将无法分辨文件名是什么,除非我亲自出现在我的工作站前,并不断修改这段代码,否则将达不到目的。你不同意吗?但是,你什么都不用做。您说过文件名可能会更改,但它将以“BFUK”开头,以“.txt.xls”结尾。这段代码将只匹配文件,文件名将匹配此模式。Turczyn再次感谢我的朋友。考虑到我是VBA新手,我确信我做错了什么,因为提供的说明仍然不起作用。我在一个单独的模块中复制了您的代码,只是为了测试它。我将工作簿保存在桌面上,并通过向其提供打开此工作簿的说明来测试您的代码,但我遇到一个错误,即没有具有我提供的名称的文件。如果此文件保存在桌面上,您能用代码演示如何打开此文件吗?我真的很感谢你的帮助@MichalTurczyn