我有一个Excel加载项,它在其工作簿中使用工作表来保存一些首选项数据(例如,用户表单上的refEdit控件的最后一个使用值)。
然后在用户表单中更改首选项时,使用vba <?php
$host = 'db_host';
$db = 'db_name';
$user = 'db_user';
$pass = 'db_password';
$con = mysqli_connect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
$con->set_charset("utf8");
mysqli_select_db($con,$db);
$params = $columns = $totalRecords = $data = array();
$params = $_REQUEST;
$columns = array(
0 => 'id',
1 => 'register',
2 => 'name',
3 => 'level'
);
$where_condition = $sqlTot = $sqlRec = "";
if( !empty($params['search']['value']) ) {
$where_condition .= " WHERE ";
$where_condition .= " ( name LIKE '%".$params['search']['value']."%' ";
$where_condition .= " OR register LIKE '%".$params['search']['value']."%' )";
}
$sql_query = "SELECT id,date_format(register, '%d/%m/%Y') as register,name,level FROM customers";
$sqlTot .= $sql_query;
$sqlRec .= $sql_query;
if(isset($where_condition) && $where_condition != '') {
$sqlTot .= $where_condition;
$sqlRec .= $where_condition;
}
$sqlRec .= " ORDER BY ". $columns[$params['order'][0]['column']]." ".$params['order'][0]['dir']." LIMIT ".$params['start']." ,".$params['length']." ";
$queryTot = mysqli_query($con, $sqlTot) or die("Database Error:". mysqli_error($con));
$totalRecords = mysqli_num_rows($queryTot);
$queryRecords = mysqli_query($con, $sqlRec) or die("Error to Get the Post details.");
while( $row = mysqli_fetch_row($queryRecords) ) {
$data[] = $row;
}
$json_data = array(
"draw" => intval( $params['draw'] ),
"recordsTotal" => intval( $totalRecords ),
"recordsFiltered" => intval($totalRecords),
"data" => $data
);
echo json_encode($json_data);
?>
保存加载项工作簿。
我发现这有时会在myDocuments中创建一个xlsm文件,而不是保存加载项(另请参阅a copy of excel add-in is created in my documents after saving)。
如何在不创建副本的情况下将加载项保存在加载项文件夹中?注意thisworkbook.save
不起作用,因为它保存打开的工作簿而不是加载项。
我也可以为首选项创建一个临时文件,但使用外接程序工作簿中的工作表似乎是存储数据的好地方。
答案 0 :(得分:0)
据我所知,您无法将文件另存为加载项并使用该文件中的工作表。
加载项文件是仅VBA文件。
您说要保存工作表上的设置。那么使用注册表呢?
将数据保存到注册表非常简单(实际上我认为比单元格更容易)。
要保存设置:
SaveSetting "MyAddIn", "Settings", "Username", "BOB"
上面的行在窗口的注册表中创建一个值为&#34; BOB&#34; as&#34;用户名&#34;。
要从您使用的注册表中获取设置:
Username = GetSetting("MyAddIn", "Settings", "Username")
您可以阅读方法here
将其保存在与工作表相对的注册表上的好处是,您无法删除或操纵数据。
答案 1 :(得分:0)
我找到了答案:用户打开了两份Excel副本(2016年和2010年)。这导致加载项文件被Excel的两个打开副本之一锁定,这意味着第二个副本以只读方式打开加载项,无法保存更改。
一种罕见的虫子,我没有预见到。我将重写以将首选项保存到%appdata%文件中。
我建议人们避免将thisworkbook.save
与插件一起使用。
感谢大家的帮助。