
PerlのWin32::OLEモジュールを使用してMS-Excelファイルを作成しています。
作成したExcelファイルを $book->SaveAs("ファイル名");のように記述して保存はできるのですが、
「名前を付けて保存」ダイアログボックスを表示して保存先を指定できるようにしたいのですが可能でしょうか?
VBAでは、「Application.GetSaveAsFilename」で表示できるようですが、PerlのWin32::OLEモジュールでも同じように表示出来ないでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
# 任意のcsv ファイルを読み込んで、任意のエクセルファイルに書き出す
#!/usr/local/bin/perl -w
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel';
my $Excel = Win32::OLE->new('Excel.Application');
my $in_name = $Excel->Application->GetOpenFilename("Microsoft Excel Files (*.*), *.csv)");
# print "[$in_name]";<stdin>;
$Excel->Workbooks->Open($in_name);
$Excel->{'Visible'} = 1; # Excel を可視化
my $out_name = $Excel->Application->GetSaveAsFilename("", "Microsoft Excel Files (*.*), *.*)");
# print "[$out_name]";<stdin>;
$Excel->ActiveWorkbook->SaveAs({Filename => "$out_name", Fileformat => xlWorkbookNormal}); # excel 2007 用
# $Excel->ActiveWorkbook->SaveAs({Filename => "$out_name", Fileformat => xlExcel9795}); # excel 95 or 97 用
$Excel->ActiveWorkbook->Close();
$Excel->Quit();
No.3
- 回答日時:
>Excel自体にマクロを登録すると、今まで作成したExcelファイルを
>保存できていたものが作成・保存が出来なくなってしまいました。
セキュリティの設定レベルも分からないのでアドバイスできませんし、そのような問題だと、セキュリティ・レベルや証明書だのややこしいのでパスです。
無難な方法としては、操作するブックにはマクロを記述しないこと。マクロは全てPERSONAL.XLSに記述する。PERSONALについてはヘルプで「XLSatrt」を調べてください。Visual Basic Editor(VBE)のProjectでPERSONAL.XLSが表示されない場合は、Excelのマクロの記録で保存先に個人用ブックを選び、マクロの記録を終了すればVBEのProjectにPERSONAL.XLSが現れます。
Excel2003 Personal SP3
ActivePerl 5.8.6
No.2
- 回答日時:
> ワークシートをクローズしてからマクロを実行するように記述しましたが間違いでしょうか?
間違えです。マクロを記述してあるブックを閉じてはいけません。
' PERSONAL.xls のマクロ
Sub SaveAsFilename()
Dim Ret As Variant
Ret = Application.GetSaveAsFilename("MyBook.xls", "Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt")
If Ret = False Then
MsgBox "キャンセルが選択されました。"
Else
Application.ActiveWorkbook.SaveAs Ret
End If
End Sub
# PERSONAL.xls は開いたままにしておく。ただし、PERSONAL.xls は非アクティブ・ブックであること
# PERSONAL.xls のマクロを実行
$Excel->Run('PERSONAL!SaveAsFilename');
回答有難うございました
連絡が遅くなり申し訳ございません
ワークシートのクローズ前にマクロを実行するようにしましたがだめでした。
確認すると、Excel自体にマクロを登録するとPerlでワークシートを開くことが出来ないようです。
Excel自体にマクロを登録すると、今まで作成したExcelファイルを保存できていたものが作成・保存が出来なくなってしまいました。
環境がWindowsXP proSP3、IIS5.1、ActivePerl 5.1、MS-Office Excel 2003ですが、
Excelのセキュリティでマクロのあるファイルは開く事が出来ないのでしょうか?
No.1
- 回答日時:
>「名前を付けて保存」ダイアログボックスを表示して保存先を指定できるようにしたいのですが可能でしょうか?
Type Library Browserを見たところ無いようですので、できないと思います。代用としてApplication.GetSaveAsFilenameをVBAのマクロに記述して、そのマクロをperlから実行してみては。
$Excel->Run('ブック名!マクロ名');
この回答への補足
回答有難うございます
早速VBAのマクロを作成してみました。
Excelに下記のマクロを記述し、
Perlから実行してみましたが、うまくいきませんでした。
Sub 保存するファイル名を表示する()
Dim Ret As Variant
Ret = Application.GetSaveAsFilename("MyBook.xls", "Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt")
If Ret = False Then
MsgBox "キャンセルが選択されました。"
Else
MsgBox Ret & "が入力されました。"
End If
End Sub
ワークシートをクローズしてからマクロを実行するように記述しましたが間違いでしょうか?
$Excel->Worksheets->close();
$Excel->Run('ブック名!保存するファイル名を表示する');
間違い等あれば教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) アンケート集計用VBAについて教えて下さい。 約100人にアンケート内容が入ったExcelファイルを 1 2022/07/27 13:12
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- その他(Microsoft Office) OneDrive Personalについて 1 2022/08/02 18:25
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
Excel_マクロ_現在開いているシ...
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
メッセージボックスのOKボタ...
-
エクセルで別のセルにあるふり...
-
一つのTeratermのマクロで複数...
-
秀丸マクロでマクロのURLを開く...
-
Excel マクロでShearePoint先の...
-
エクセルに張り付けた写真のフ...
-
EXCELマクロでのThisisWor...
-
ExcelのVBAを使ってタイトル行...
-
Word VBA 表中の空白行を削除す...
-
マクロの連続印刷が突然不可能...
-
ダブルクリックで貼り付けた画...
-
IF関数を使ってマクロを実行さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
Excelのセル値に基づいて図形の...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
オートフィルターとExcelマクロ...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
おすすめ情報