VBAとC言語でwavファイル再生
VBAとCのプログラムについてどなたかアドバイスしていただけませんか?
特定のcsvファイルに1が入ったら指定のwavファイルを再生させるプログラムを作りたいのですが、
どうしてもエラーになってしまいます。
(必ずどこかのcsvに1が入り、その他のcsvには0が入るようにしています。)
以下にVBAとCのプログラムを載せます。
ちなみに、VBAはopen1と同様の内容をopen10まで行い、read1も同様にread10まで行います。
Sub open1()
Dim buf As String
Open "C:\Users\Documents\Debug\file1.csv" For Input As #1
Do Until EOF(1)
Line Input #1, buf
Cells(1, 1) = buf
Open "C:\Users\Documents\Visual Studio 2008\Projects\PlaySound\Debug\1.csv" For Output As #2
Print #2, buf
Close #2
Loop
Close #1
End Sub
Sub read1()
Dim FlNum As Long, FlName As String, Atai As Variant
FlNum = FreeFile
FlName = "C:\Users\\Documents\Debug\file1.csv"
Open FlName For Output Access Write As #FlNum
Atai = Range("A1")
Print #FlNum, CStr(Atai)
Close #FlNum
End Sub
これでcsvの内容をコピーさせています。
そして、Cのプログラムが以下です。
#include "stdafx.h"
#include <windows.h>
#include <mmsystem.h>
#include<stdio.h>
#include<time.h>
#include<windows.h>
#pragma comment (lib,"winmm.lib")
FILE *fp1;
FILE *fp2;
FILE *fp3;
FILE *fp4;
FILE *fp5;
FILE *fp6;
FILE *fp7;
FILE *fp8;
FILE *fp9;
FILE *fp10;
int _tmain(int argc, _TCHAR* argv[])
{
//引数
int s;
int t;
int u;
int v;
int w;
int x;
int y;
int z;
int z1;
int z2;
//回数表現
int a=1;
int b=1;
int c=1;
int d=1;
int e=1;
int f=1;
int g=1;
int h=1;
int h1 = 1;
int h2 = 1;
while(1){
Sleep(2000);
fp1 = fopen("1.csv","r");
fp2 = fopen("2.csv","r");
fp3 = fopen("3.csv","r");
fp4 = fopen("4.csv","r");
fp5 = fopen("5.csv","r");
fp6 = fopen("6.csv","r");
fp7 = fopen("7.csv","r");
fp8 = fopen("8.csv","r");
fp9 = fopen("9.csv","r");
fp10= fopen("10.csv","r");
printf("finish to open csv file\n");
fscanf(fp1,"%d",&s);
printf("finish to scan file1.csv %d\n", &s);
fscanf(fp2,"%d",&t);
fscanf(fp3,"%d",&u);
fscanf(fp4,"%d",&v);
fscanf(fp5,"%d",&w);
fscanf(fp6,"%d",&x);
fscanf(fp7,"%d",&y);
fscanf(fp8,"%d",&z);
fscanf(fp9,"%d",&z1);
fscanf(fp10,"%d",&z2);
printf("finish to scan csv file\n");
if(s==1&&a==1){
::PlaySound(_T("what.wav"),NULL, SND_FILENAME);
b = 1;
c = 1;
d = 1;
e = 1;
f = 1;
g = 1;
h = 1;
h1 = 1;
h2 = 1;
a++;
}
(同様にif文がcsvのそれぞれにつきあるのと、fcloseもありますが、省略します。)
ビルドは正常終了するのですが、デバッグすると以下のエラーメッセージが出ます。
Debug Assertion Failed!
Proogram:...\Debug\PlaySound.exe
File:f:\dd\vctools\crt_bld\self_x86\crt\src\fscanf.c
Line:52
Expression:(stream != NULL)
For information on how your program can cause an assertion failure,
see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
中止(A)再試行(R)無視(I)
試しにDebugフォルダにできた実行ファイルを開くと
printfできちんと出力もできてますし、
csvファイルもきちんと出力できています。
wavファイルを再生させるにはどうしたらいいでしょうか。
お礼
とても参考になりました。ありがとうございました。