⑴ 在excel vba中如何調用api函數實現快速查找文件名
excel vba調用windows API 快速查找所選擇的文件
excel選中文件名清單、自動從「a1"文件夾中查找相應的文件。
ShellExecuteA,DataObject,Clipboard,find,SendKeys
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _
String, ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
Const SW_SHOW = 5
Sub test()
Selection.Copy
Dim MyData As DataObject
Dim sTemp As String, s As String
Set MyData = New DataObject
MyData.GetFromClipboard
sTemp = MyData.GetText
s = Replace(sTemp, vbCrLf, ";")
s = Replace(s, vbTab, ";")
MyData.SetText (s)
MyData.PutInClipboard
ShellExecute 0&, "find", Range("a1"), _
vbNullString, vbNullString, SW_SHOW
Application.Wait (Now + TimeValue("0:00:02"))
SendKeys s & "{ENTER}"
End Sub
⑵ C語言中怎樣調用函數(舉個例子)
C語言中調用函數的方法及步驟:
工具/原料:C語言
1、首先需要輸洞氏入想要調用的函數。
⑶ C語言如何調用函數
C語言中,函數調用的一般形式為:
函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
#include<stdio.h>
intfun(intx,inty);//函數聲明,如果函數寫在被調用處之前,可以不用聲明
voidmain()
{
inta=1,b=2,c;
c=fun(a,b);//函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
//自定義函數fun
intfun(intx,inty)//函數首部
{//{}中的語言為函數體
returnx>y?x:y;//返回x和y中較大的一個數
}
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。但是C語言允許在一個函數的定義中出現對另一個函數的調用。
這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。這與其它語言的子程序嵌套的情形是類似的。其關系可表示如圖。
圖表示了兩層嵌套的情形。其執行過程是:執行main函數中調用a函數的語句時,即轉去執行a函數,在a函數中調用b 函數時,又轉去執行b函數,b函數執行完畢返回a函數的斷點繼續執行,a函數執行完畢返回main函數的斷點繼續執行。
⑷ 在Excel中,我的sum函數里,如何變化調用別的文件名
在我看來:由於使用了絕對路徑的文件名,您的這種想法在消耐培EXCEL中是無法實現的。
不過您可以將上述記錄表畝前放入同一個工作溥中,拿唯再動態調用。
⑸ matlab怎麼調用函數
在matlab中,如果是matlab自帶的函數,則可以按照該函數的格式直接調用,如果是自己編寫的函數,可以將函數寫在一個文件中,之後再主文件中調用。舉例說明如下:
%
文件名為fun.m(注意:文件名需要與函數名一致)
function
y
=
fun(x)
y
=
x.^2;
下面開始編寫主文件(文件名為main.m),並調用函數文件fun.m中的函數fun。
情況1:函數文件fun.m和主文件main.m在同一目錄下,此時直接調用即可。
a
=
[1,
2,
3];
b
=
fun(a);
%
運行後,b=[1,
4,
9]
情況2:函數文件fun.m和主文件main.m在不同一目錄下,此時需要將函數文件包含進來才可以調用fun函數。
addpath('directory');
%
其中,directory是函數文件fun.m的路徑
a
=
[1,
2,
3];
b
=
fun(a);
%
運行後,b=[1,
4,
9]
⑹ matlab 中function的用法
電腦告訴你,
函數
定義
不允許在命令行或者
腳本
里。
所以你不能在命令行窗口中輸入function
b=sushu(n),而是要建立個m文件。
在命令行輸入edit
sushu
然後會彈出
對話框
問你是否創建m文件,確定之後打開m文件的
編輯器
。
在里型模面
輸入function
b=sushu(n),然後後面可以寫塌租御函數內容了。
function
b=sushu(n)前面可以有
注釋
,但不可以有其他
命令
,
如果有其他命令,matlab就會認為這個m文件是個
腳本文件
,而不是函數文件。一樣會出錯的。函數定義不能團岩混雜在腳本文件中。
最後編輯好
別忘了
保存,保存的
文件名
可以和function定義的函數名相同也可以不同,不過在命令行調用函數的時候是按你保存的文件名調用的。
調用時在命令行寫命令啊,跟
系統函數
一樣的
用法
,
比如
y=sushu(x);
或者
b=min(sushu(a));
類似於這樣的,都可以,看你具體函數是什麼了,需要什麼樣的
參數
。
⑺ C++打開文件函數
C++通過以下幾個類支持文件的輸入輸出
(1) ofstream:寫操作,輸出文件類;
(2) ifstream:讀操作,輸入文件類;
(3) fstream:可同時讀寫的文件類。
1. open函數:打開文件
函數原型:void open(const char*filename,int mode,int access);
參數說明:filename:要打開的文件名
mode:要打開文件的方式
access:打開文件的屬性
打開文件的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下:
ios::app:以追加的方式打開文件
ios::ate:文件打開後定位到文件尾,ios:app就包含有此屬性
ios::binary: 以二進制方式打開文件,預設的方式是文本方式。兩種方式的區別見前文
ios::in: 文件以輸入方式打開
ios::out:文件以輸出方式打開
ios::nocreate: 不建立文件,所以文件不存在時打開失敗
ios::noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗
ios::trunc:如果文件存在,把文件長度設為0
可以用「或」把以上屬性連接起來,如ios::out|ios::binary
打開文件的屬性取值是:
0:普通文件,打開訪問
1:只讀文件
2:隱含文件
4:系統文件
例如:以二進制輸入方式打開文件c:\config.sys
fstreamfile1;
file1.open("c:\\config.sys",ios::binary|ios::in,0);
ofstream file;
file.open ("example.bin", ios::out |ios::app | ios::binary);
2. close函數
函數原型:void close()
3. 二進制文件(Binary files)
在二進制文件中,使用<< 和>>,以及函數(如getline)來操作符輸入和輸出數據,沒有什麼實際意義,雖然它們是符合語法的。
文件流包括兩個為順序讀寫數據特殊設計的成員函數:write 和 read。第一個函數 (write) 是ostream 的一個成員函數,都是被ofstream所繼承。而read 是istream 的一個成員函數,被ifstream 所繼承。類 fstream 的對象同時擁有這兩個函數。它們的原型是:
write ( char *buffer, streamsize size );
read ( char * buffer, streamsize size );
這里 buffer 是一塊內存的地址,用來存儲或讀出數據。參數size 是一個整數值,表示要從緩存(buffer)中讀出或寫入的字元數。
⑻ matlab定義了一個函數function有三個參數,都是文件名,如何調用該函數
應該分模塊實現,一個主模塊+幾個子模塊(握宏每個子模塊也亂皮脊就對應一個函數,嘩滲也就是以
function開頭)。寫一個main.m作為主模塊,然後調用其他的各個子模塊(調用各個子函數)就行了。舉個例子:實現兩個數的相加和相減main.m
%%主函數c1=add(a,b);
%調用子函數c2=add(a,b);
%調用子函數add.m(如下)function
c1=add(a,b)c1=a+b;subtract.m(如下)function
c2=subtract(a,b)c2=a-b;
⑼ matlab中save函數的『文件名』參數能是函數調用的嗎
當然可以姿寬。
一種做跡基亮法是你先生成字元串然後再執行:
cmd鋒春=['save'MyDatFile'...'];
eval(cmd)
另一種做法更簡單,把save當成函數使用就是了:
save(MyDatFile,...)
⑽ 單片機 C語言,如何調用外部自定義函數。
函數定義好以後,要被其它函數調用了才能被執行。C
語言的函數是能相互調用的,
但在調用函數前,必須對函數的類型進行說明,就算是標准庫函數也不例外。標准庫函數的
說明會被按功能分別寫在不一樣的頭文件中,使用時只要在文件最前面用#include
預處理語
句引入相應的頭文件。如前面一直有使用的
printf
函數說明就是放在文件名為
stdio.h
的
頭文頌行件中。調用就是指一個函數體中引用另一個已定義的函數來實現所需要的功能,這個時候函
數體稱為主調用函數,函數體中所引用的函數稱為被調用函數。一個函數體中能調用數個
其它的函數,這些被調用的函數同樣也能調用其它函數,也能嵌套調用。筆者本人認為
主函數只是相對於被調用函數而言。在
c51
語言中有一個函數是不能被其它函數所調用的,
它就是
main
主函數。調用函數的一般形式如下:
函數名
(實際參數表)
「函數名」就是指被調用的函數。實際參數表能為零或多個參數,多個參數時要用逗
號隔開,每個參數的類型、位置應與函數定義時所的形式參數野橡嘩一一對應,它的作用如寬就是把參
數傳到被調用函數中的形式參數,如果類型不對應就會產生一些錯誤。調用的函數是無參函
數時不寫參數,但不能省後面的括弧。
在以前的一些例子我們也能看不一樣的調用方式:
1.函數語句
如
printf
("Hello
World!n");
這是在
我們的第一個程序中出現的,它以
"Hello
World!n"為參數調用
printf
這個庫函數。在這里函數調用被看作了一條語句。
2.函數參數
「函數參數」這種方式是指被調用函數的返回值當作另一個被調用函數的實際參
數,如
temp=StrToInt(CharB(16));CharB
的返回值作為
StrToInt
函數的實際參數傳遞。
3.函數表達式
而在上一篇的例子中有
temp
=
Count();這樣一句,這個時候函數的調用作為一個運算
對象出現在表達式中,能稱為函數表達式。例子中
Count()返回一個
int
類型的返回
值直接賦值給
temp。注意的是這種調用方式要求被調用的函數能返回一個同類型的值,
不然會出現不可預料的錯誤。
前面說到調用函數前要對被調用的函數進行說明。標准庫函數只要用#include
引入已
寫好說明的頭文件,在程序就能直接調用函數了。如調用的是自定義的函數則要用如下形
式編寫函數類型說明
類型標識符
函數的名稱(形式參數表);
這樣的說明方式是用在被調函數定義和主調函數是在同一文件中。你也能把這些寫到
文件名.h
的文件中用#include
"文件名.h"引入。如果被調函數的定義和主調函數不是在同
一文件中的,則要用如下的方式進行說明,說明被調函數的定義在同一項目的不一樣文件之上,
其實庫函數的頭文件也是如此說明庫函數的,如果說明的函數也能稱為外部函數。
extern
類型標識符
函數的名稱(形式參數表);
函數的定義和說明是完全不一樣的,在編譯的角度上看函數的定義是把函數編譯存放在
ROM
的某一段地址上,而函數說明是告訴編譯器要在程序中使用那些函數並確定函數的地
址。如果在同一文件中被調函數的定義在主調函數之前,這個時候能不用說明函數類型。也就
是說在
main
函數之前定義的函數,在程序中就能不用寫函數類型說明了。能在一個函
數體調用另一個函數(嵌套調用),但不允許在一個函數定義中定義另一個函數。還要注意
的是函數定義和說明中的「類型、形參表、名稱」等都要相一致。