我正在尝试构建一个分布式计算系统,该系统使用内存映射文件通过VBA协调多个联网PC之间的工作.换句话说,我想让一组联网的计算机同时以协调的方式在一个项目上工作,这个项目可以很容易地分成不同的部分.一台PC需要13个多小时才能完成项目,这对我的客户来说并不实用.
我想将信息存储在内存映射文件中,以帮助PC以协调的方式处理项目(即不重复工作,避免竞争问题等).我已经尝试使用其他类型的文件来实现这一点,它会导致文件争用问题,或者它需要太长时间.所以,正如在这个论坛上所建议的那样,我正在尝试内存映射文件.
我是内存映射文件和分布式计算的新手.必须在VBA中完成.据我所知,我必须指定将文件保存在我们网络上的目录(这里是驱动器Z),所有PC都可以访问.我拼凑了来自不同地方的一些代码:
Option Explicit
Private Const PAGE_READWRITE As Long = &H4
Private Const FILE_MAP_WRITE As Long = &H2
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_ALWAYS = 4
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long …Run Code Online (Sandbox Code Playgroud) 我打开了一个 Excel 工作簿,并且想要一个 .bat 文件来在同一 Excel 实例中打开工作簿。我该怎么做?换句话说,Excel 工作簿已在一个 Excel 实例中打开,我想使用 .bat 文件脚本打开另一个工作簿,但我不想创建另一个 Excel 实例。两个工作簿应在同一个 Excel 实例中打开。
这是我现在正在做的事情,但不起作用:Excel工作簿1已经打开(手动),excel实例1(excel.exe)已经打开(手动)。在稍后的某个时间点,我的 .bat 文件开始通过任务计划程序运行。我的 .bat 文件代码如下所示:
REM open excel workbook
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" "Y:\somepath\somefilename.xlsm"
EXIT
Run Code Online (Sandbox Code Playgroud)
...并且 excel.exe 的实例 2 是在其中打开“somefilename”创建的,这是错误的。
我只需要一个 excel.exe 实例,并且在该实例中打开两个文件/工作簿,并且我必须使用 .bat 文件打开第二个文件(出于令人沮丧但必要的原因)。没有其他语言,请批量。谢谢!
我想在工作表中创建一个ActiveX按钮并为其分配代码(即告诉它要运行哪个子节点,并且该子节点已经存在).
我可以创建按钮:(已录制)
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=41395.5882352941, Top:=234.705882352941, _
Width:=119.117647058824, Height:=39.7058823529412).Select
Run Code Online (Sandbox Code Playgroud)
但我想更改标题并为其分配一个子标题,以便当有人单击新创建的activex按钮时,它会运行一个已经存在于工作簿中要创建按钮的模块中的子文件.一切都在ThisWorkbook中发生并存在.
谢谢!
PS - 我不能使用命令按钮....我只能使用ActiveX
我正在尝试使用 html5lib 在具有可用列名的一列中获取 50 个状态缩写。
import pandas as pd
import html5lib
fiddy_states = pd.read_html('https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations')
fs = fiddy_states[0]
Run Code Online (Sandbox Code Playgroud)
在这里我无法更改列名:
fs.rename(columns={4:'abbv'},inplace=True)
Run Code Online (Sandbox Code Playgroud)
在这里,我只能得到我想要的行,但我仍在整理如何在没有可用列名的情况下获得第 4 列:
fs[11:]
Run Code Online (Sandbox Code Playgroud) 如何转换abs(checksum(newid())) % 100 + 1 / 100为小数?
例如,如果abs(checksum(newid())) % 100 + 1生成的值为 98,我期望得到 0.98。
然后尝试只给出 1 或 0:
,cast(cast(abs(checksum(newid())) % 100 + 1 as decimal)/100 as decimal)
excel ×3
excel-vba ×2
vba ×2
activex ×1
batch-file ×1
pandas ×1
python ×1
python-3.x ×1
sql ×1
sql-server ×1