问题标签 [getopenfilename]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
850 浏览

vba - 使用 Application.GetOpenFilename 检查在 Excel 中打开的文件的有效性

有没有一种简单的方法来检查使用 Application.GetOpenFilename 打开的文件是否具有预期的结构?例如,第一张表中 A1 的值必须是“存档”。

如果文件不符合预期,则 VBA 脚本不应继续工作。

0 投票
0 回答
385 浏览

matplotlib - 调用 PyQt4.QFileDialog.getOpenFileNames() 后 PyPlot show() 真的很慢

对于分析应用程序,我正在尝试:

  1. 使用 PyQt4 QFileDialog 从用户那里获取文件名列表
  2. 从每个文件中提取一些数据
  3. 使用 pyplot 绘制聚合数据

但是,以这种方式获取文件名会导致 pyplot.show() 花费非常非常长的时间。我已将问题提炼为以下测试用例:

请注意,我什至没有对这里的文件名做任何事情——只是获取它们。

从对话框中选择单个文件会导致 10 秒的绘图时间。有趣的是,show() 完成所需的时间与所选文件的数量大致呈线性关系。对于 10 个文件,图表显示大约需要 67 秒。

对于从少数文件中绘制数据来说,这并不是什么大问题,但是当汇总来自有数千个文件的 Monte Carlo 模拟的数据时,绘图可能需要数小时才能显示出来。告诉 matplotlib 使用 Qt4Agg 后端会导致相同的行为。

如果我注释掉对 getOpenFileNames 的调用,脚本将在一秒钟内完成。

我正在运行以下版本的相关软件包(应该是最新的):

  • 蟒蛇 2.7
  • matplotlib 1.3.1
  • python-sip 4.13.2-1
  • python-qt4 4.9.1-2ubuntu1
  • python-sip-dev 4.13.2-1
  • python-qt4-dev 4.9.1-2ubuntu1

我卸载了 sip、qt4 并重新安装了它们——同样的问题。我已经在两台不同的机器上看到了这个问题——它们都运行 32 位 Ubuntu 12.04。

任何帮助将不胜感激 - 我浪费了令人尴尬的时间等待情节显示。


更新:

  • 所选文件的类型和名称似乎无关紧要。
  • 取消或退出文件对话框不会导致延迟并立即打印。
  • 以 sudo 运行脚本可以解决这个问题;但是,当我以 sudo 运行时,文件对话框看起来不同,并且可能使用了不同的 gui 后端,这与 pyplot 对 PyQt 的使用不冲突,因此可能是一个红鲱鱼。
  • 该程序不会在 getOpenFileNames 中挂起,它会在使用 PyQt 的下一个调用中挂起。无论是绘图还是另一个文件对话框似乎都无关紧要 - 第一个文件对话框会阻止两者。
  • 运行对话框后调用 app.processEvents() 没有帮助。
  • 使用 PySide 代替 PyQt4 会导致相同的行为。
  • 使用 getOpenFileName 而不是 getOpenFileNames 会导致相同的行为。
  • 使用 DontUseNativeDialog 选项运行 getOpenFileNames 有效(无延迟)
  • 其他 QFileDialog 选项都没有任何效果(ShowDirsOnly、DontResolveSymlinks、DontConfirmOverwrite、ReadOnly、HideNameFilterDetails、DontUseSheet)
0 投票
1 回答
250 浏览

c++ - GetSaveFileName 失败并显示 CDERR_FINDRESFAILURE

我写了一个TOpenPictDialog(源代码见下文)组件,在调用时在某些情况下最终失败

结果:= TDialogFunc(DialogFunc)(DialogData);

在 Dialogs.pas 中。由于 DialogFunc 正确指向 GetOpenFileName,我随后调用 CommDlgExtendedError 进行测试以找出问题所在。它返回 CDERR_FINDRESFAILURE。在这种情况下,对话框根本没有显示。我的测试表单只包含一个按钮和 TOpenPictDialog 组件,当按下按钮时,会调用 OpenPictDialog1->Execute - 仅此而已。

非常奇怪的是,它在以下情况之一下确实可以正常工作(除了 TListView 在调整大小时闪烁):

a) 在调用表单的“uses”中添加 ExtDlgs b) 将原始 TOpenPictureDialog 添加到表单而不调用它 c) 将包含 TOpenPictDialog 的 PAS 文件添加到项目中(尽管已经安装了 TOpenPictDialog)

如果我用一个调用表单编写一个 C++ Builder 应用程序,我永远不会让 TOpenPictDialog 正常工作(即使我添加了额外的 TOpenPictureDialog 组件)。

0 投票
1 回答
151 浏览

excel - Vlookup 语法和用户输入问题

我正在尝试创建一个宏来比较两个用户输入的工作表,然后根据不同的原因将差异移动到不同的工作表。

代码首先要求输入最新数据并打开该表。然后它要求比较旧数据的位置,但不打开它。它添加了要复制到的必要工作表。

然后它在第二个工作簿上逐个单元格地查找匹配的序列(这主要是为了确保它比较正确的数据以防万一格式关闭)。一旦找到匹配的序列号,它就会比较两个条目的第二个序列号,并取决于它是不同的还是新的输入到其中一张表中。

我遇到的主要问题是 VLookup。它有多个错误 424、1004 和编译表达式错误。我需要一些指导来说明为什么会出现这些问题。我已经搜索并发现很多需要使用括号来引用文件,但是当我完全遵循这些格式时,它会引发表达式错误。

任何建议表示赞赏。

0 投票
2 回答
3118 浏览

c++ - QFileDialog::getOpenFileName 在调试时崩溃,显然是由项目名称引起的?

我遇到了一个让我非常困惑的问题。我在 Windows 7 上使用 Qt Creator 3.1.2 和 Qt 5.3,使用 MSVC 10.0 编译器和 Windows 8.1 调试工具中的 CDB。(不确定我是否应该寻找特定于 Windows 7 的调试器,但直到现在我还没有遇到任何问题)。

问题:当我在调试时尝试使用 QFileDialog::getOpenFileName() 时,程序抛出异常。

下级停止了,因为它触发了异常。

在线程 0 中停止:异常在 0x745f7736,代码:0xc0000005:读取访问冲突在:0x0,标志 = 0x0(第一次机会)。

发布/调试构建无关紧要。如果我正在运行调试器,它会崩溃。如果我不是,它可以工作。我尝试了很多不同的事情来试图弄清楚为什么会发生这种情况 - 我将 getOpenFileName 移动到程序的不同部分,我尝试更改/删除函数调用的参数,我基本上剥离了我的所有代码,除了显示此文件对话框所需的最低要求 - 一个 QApplication 和一个在单击菜单栏项时调用 getOpenFileName() 的主窗口。没有任何效果。

然后我创建了一个基本相同的新项目。莫名其妙地,-那-奏效了。所以后来做了很多乱七八糟的事情,从我的主项目中复制东西直到它再次开始崩溃,我最终发现了问题:显然,它是 .pro 文件中的“TARGET”设置的可执行文件名称。如果它设置为 PrimeWorldEditor(我的应用程序的名称),它会崩溃。如果我将其更改为其他任何内容,它就会起作用。

所以我的第一个想法是,有一些剩余的文件与可执行文件共享它们的名称,从而导致问题。但是,清除构建文件夹、重建项目以及其他任何事情都无济于事。

我已经对可能导致问题的原因一无所知,并且我尝试并未能通过搜索找到与可执行文件共享名称或指向它的任何其他文件。如果有人知道问题可能是什么,我将非常感谢您的帮助。我现在可以通过更改可执行文件的名称来解决它,但我真的很想找出为什么会发生这种情况并修复它。

编辑:有几个人在要求代码,所以这里有一个程序崩溃的例子。再一次,这只会在目标可执行文件名称设置为 PrimeWorldEditor 的情况下运行调试器时崩溃。在其他情况下,它会按预期工作并打开 getOpenFileName() 对话框。

我认为这个问题可能与我的设置有关,所以我不确定它是否很容易重现。

编辑2:我想补充一点,我确实花了一段时间谷歌搜索试图找到与该问题相关的任何信息。我确实找到了几个似乎和我有同样问题的人,比如这个帖子,但是这些帖子上没有任何解决方案。

0 投票
1 回答
372 浏览

winapi - 获取打开文件名。如何以编程方式启用和禁用“上一级”按钮?

使用 GetOpenFileName 对话框。使用 OFN_EXPLORER 并指定一个钩子(所以我得到了 XP 样式对话框)。我可以隐藏/显示和启用/禁用对话框上的许多控件,但不能隐藏“上一级”(父目录)按钮?

在挂钩函数中,如何以编程方式启用和禁用“上一级”按钮?

编辑:回应“可能已经回答”:不,这根本不是同一个问题。我正在尝试专门启用和禁用对话框上的“父”按钮。

0 投票
1 回答
1301 浏览

string - VBA中的GetOpenFileNameW?

好的,我在这里可能有点偏离基础,但我想做的是使用 GetOpenFileName 的 API 调用的宽 (Unicode) 版本来返回多个文件的列表。

现在,我要这样做的原因是:选择多个文件时,文件名的总字符数限制取决于函数的版本。
•ANSI:32k 限制
•Unicode:无限制

从深埋在我的网络中的目录中返回大量文件可能会很快超过 ANSI 32k 字符的限制。

所以,我所做的是使用我的工作 ANSI 声明函数,并将所有string声明的变量替换为lngptr. 然后,在我需要为这些赋值的地方,我使用了该StrPtr()函数来转换字符串值。

现在,当我尝试调用此函数时,它到达了调用 Declared 函数的部分,它lReturn = GetOpenFileNameU(OpenFile)实际上并没有做任何事情!没有错误,什么都没有——只是越过那条线,什么也没有发生。我做错什么了??

这就是我现在的位置:

0 投票
1 回答
4679 浏览

vba - 从选定的 Excel 文件中复制数据

我正在尝试构建一个宏,该宏在运行时将允许我选择给定文件并检查该选定文件的 C 列中的数据。我对 VBA 很陌生,只有基本的技能。除了我从变量文件中提取数据并将其粘贴到我的宏文件的 A 列以执行审查功能的部分之外,我的代码的所有部分都在工作。

我拼凑了下面的代码,将任何给定选定文件的 C 列中的数据填充到宏文件的 A 列中,从我可以通过搜索站点拼凑的内容,但在选择文件后我仍然收到错误 400运行此 Sub 时打开。将不胜感激找出这部分的任何帮助。

谢谢!

0 投票
2 回答
953 浏览

vba - 将 VLOOKUP 作为字符串写入具有通过 GetoOpenfilename 检索的动态路径的单元格中

我正在尝试使用 VBA 在单元格中将 VLOOKUP 作为字符串编写。这意味着我不希望结果作为一个值出现在单元格中,而是我想要整个 VLOOKUP 表达式(对于这个例子:"VLOOKUP(C6,'[path_to_file.xlsm]OTD Table!$B:$F,4,0)")。挑战在于 VLOOKUP 的范围参数是一个路径的串联,(path_to_file.xlsm)即用户使用 GetOpenFilename 和一个字符串进行选择,该字符串指定查找表所在的选项卡("OTD Table!$B:$F,4,0"). 我得到的问题非常有趣:

当我在 Msgbox 中打印我的表达式时,表达式正确显示。但是,当我将其写入单元格时,路径神秘地出现错误。

我希望你们中的一个人能理解这一点!

0 投票
0 回答
161 浏览

qt - linux上的QFileDialog.getOpenFileName截断

对于位于 的文件/home/rrg29876/villy/air.out,当我在 Windows 中运行以下代码时一切正常:

但在 Linux 中,我得到:

然后我不能在我的程序中做任何事情,因为文件名和过滤器是错误的..

任何人都可以帮助向我解释这种截断和/或建议解决/解决此问题的方法吗?