AIと戦って、あなたの人生のリスク診断 >>

[環境] WinXpHomeSP2
Excel2002SP3

Excelのユーザーフォーム上にあるコマンドボタンをクリックすると、アクティブになっているシートを印刷するプログラムを作成しています。
印刷前に印刷ダイアログを表示し、プリンタの設定およびプレビューを可能にしたいため、
Application.Dialogs(xlDialogPrint).Show
を使用しています。
ユーザーフォームはその直前でいったんHideし、上記コードの直後に再度Showしています。

表示された印刷ダイアログの「プレビュー」ボタンをクリックすると、Hideしたはずのユーザーフォームがプレビュー画面の前面に表示されてしまい、プレビュー画面、ユーザーフォーム画面のどちらのボタンも効かなくなって制御不能となってしまいます。

プレビューしてもユーザーフォームが立ち上がってこなくなる方法を教えてください。

このQ&Aに関連する最新のQ&A

hide」に関するQ&A: firefox4.0でAutohide

A 回答 (5件)

再度の登場 onlyromです。



>UserForm1をいったんHideした後にまたShowするため、※1が実行され
その後は新しくUserForm1が立ち上がったのと同じ動作をします。

Showすれば必ずActivateイベントが発生します。
その処理は、
UserForm_Initializeイベントに書くと拙いのですか?
Initializeイベントであれば、HideしてShowしても
そこを通りませんので実行されません。

絶対Activateイベントに書かなければならないコードであり、
かつ、今回のように場合によっては、Activateイベントのコードを
実行させたくない時は

実行させるかさせないか判断させるための変数を
モジュール変数としてとっておきそれを利用する手もあります。


それから、
>このUserForm1が閉じられた後、※2を実行してしまうため、エラーになってしまいうまくいきません。

これは、Showの前で、※2を実行すればいいのではありませんか?


'--------------------------------------

  Dim MyFlag as Boolean

'--------------------------------------
Private UserForm_Activate()

  If MyFlag = True then Exit Sub

    ーーー処理ーーー

End Sub
'--------------------------------------


Private Sub CommandButton1_Click
  Dim blResponse AS Boolean
   :(帳票出力準備)

●● MyFlag = True  ●●

  UserForm1.Hide

  blResponse = Application.Dialogs(xlDialogPrint).Show
   :(帳票出力後始末)
  If blREsponse Then
    MsgBox "出力終了"
  End If


▲▲   : (※2)  ▲▲
  
   UserForm1.Show

●● MyFlag = False ●●


End Sub
'--------------------------------------------------

UserformActivateイベントで何をしてるのか
(※2) で何をしてるのか分かりませんので
これくらいのアドバイスしかできませんが、

さらに言うと
UserForm.Showの後に、(※2)のように何かの処理をさせるコードを書くことはありません。
書くとすれば、UserFormをYesNoのMsgBoxのように使う場合です。

また上記アドバイスでは、UserFormの使い方が不明でしたので
(※2)とShowを入れ替えていますが、
通常、UserFormが閉じられたときの処理は、
UserForm_QueryClose などに書きます。
 

Activateイベントの処理内容、(※2)の処理内容が分かれば
もっと的確な回答が寄せられるでしょう。
 

 
 
    • good
    • 0
この回答へのお礼

ご回答ほんとうに感謝いたします。

ご教示いただいたことをもとに、以下のように修正しました。
1.ActivateイベントからInitializeに書き直した。
2.CommandButton1_Clickの流れ全体を見直し、UserForm.Showの後にあった処理をその前に持ってきた。
No4さんの回答を参考にさせていただき、結局UserForm.Showはなくなりましたが、全体にコードがすっきりしました。

情報不足の中、的確なご回答をいただき、ほんとうにありがとうございました。

お礼日時:2007/11/11 21:35

修正


割り込み失礼しました。
  ↓
割り込み失礼します。
でした。(^^;
    • good
    • 0

こんにちは。



割り込み失礼しました。

Excel2002SP3という条件なら、

>ユーザーフォームがプレビュー画面の前面に表示されてしまい、プレビュー画面、ユーザーフォーム画面のどちらのボタンも効かなくなって制御不能となってしまいます。

私の読み違えでなかったら、それは、Zオーダーの前面に来る来ないは別にして、Modalモード(=ShowModal または、.Show ) が、Trueにしてあるからではありませんか? 単に、False にすれば、Hide にしなくてもよいと思います。

あえて、UserForm が邪魔というなら、以下のようなコードにすればよいと思います。
ただ、UserForm のプロパティの 「ShowModal : False または、.Show(False)」には変わりありません。

----------------------------------------------------------------------

Private Declare Function CloseWindow Lib "user32.dll" _
(ByVal hWnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" _
    (ByVal hWnd As Long) As Long

Private Const GWL_STYLE As Long = -16
Private Const WS_THICKFRAME As Long = &H40000
Private Const WS_MINIMIZEBOX As Long = &H20000


Private Sub CommandButton1_Click()
Dim strClassName As String
Dim hWnd As Long
Dim ret As Long
strClassName = "ThunderDFrame" '97:ThunderXFrame"

hWnd = FindWindow(strClassName, Me.Caption)

ret = CloseWindow(hWnd)
Application.Dialogs(xlDialogPrint).Show

End Sub

Private Sub UserForm_Initialize()
Dim strClassName As String
Dim hWnd As Long
Dim lngNewLong As Long
Dim ret As Long
strClassName = "ThunderDFrame" '97:ThunderXFrame"

hWnd = FindWindow(strClassName, Me.Caption)
lngNewLong = GetWindowLong(hWnd, GWL_STYLE)
ret = SetWindowLong(hWnd, GWL_STYLE, _
          lngNewLong Or _
          WS_THICKFRAME Or _
          WS_MINIMIZEBOX)
ret = DrawMenuBar(hWnd)
End Sub


----------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

コードまで書いていただき、ほんとうにありがとうございます。
早速そのまま使わせていただきました。
結果、かなり理想に近い動作に仕上がり、あと一息で完成となりそうです。
どうもありがとうございました。

お礼日時:2007/11/11 21:38

 


何はともあれ、実際のコードをアップしてみてください。

Private Sub CommandButton1_Click()

 ● ここのコードをアップ ●

End Sub


 
 

この回答への補足

ありがとうございます。
最初は下記のようにコードを記述していました。
Private Sub UserForm_Activate
   :
End Sub

Private Sub CommandButton1_Click
   :
  UserForm1.Hide
  Application.Dialogs(xlDialogPrint).Show
  UserForm1.Show
   :
End Sub

質問した後、ANo1様のアドバイスをもとに、以下のようにコードを変更しました。
UserForm1は印刷する、しないにかかわらず必ず表示させておきたいのです。

Private Sub UserForm_Activate
   : (※1)
End Sub

Private Sub CommandButton1_Click
  Dim blResponse AS Boolean
   :(帳票出力準備)
  UserForm1.Hide
  blResponse = Application.Dialogs(xlDialogPrint).Show
   :(帳票出力後始末)
  If blREsponse Then
    MsgBox "出力終了"
  End If
  UserForm1.Show
   : (※2)
End Sub

上記のように変更し、一見うまくいったように見えましたが、UserForm1をいったんHideした後にまたShowするため、※1が実行され、その後は新しくUserForm1が立ち上がったのと同じ動作をします。
このUserForm1が閉じられた後、※2を実行してしまうため、エラーになってしまいうまくいきません。
UserForm1を表示させたままでxlDialogPrintが使えれば良いのですが...。

補足日時:2007/11/08 23:24
    • good
    • 0

Application.Dialogs(xlDialogPrint).Show



の後に

If response = ok Then
  UserForm1.Show    ←ユーザーフォームの名称
End If

とすれば、印刷OKのボタンを押したときにユーザーフォームが現れると思います。

この回答への補足

ご教示ありがとうございます。

If response = ok Then ...
としてみましたが、
コンパイルエラー 変数が定義されていません。
となってしまいます。

補足日時:2007/11/08 14:30
    • good
    • 0
この回答へのお礼

ダイアログの結果を受け取る方法はわかりました。
Dim response As Boolean

response = Application.Dialogs(xlDialogPrint).Show
If response = true Then

ですね。
ありがとうございました。

お礼日時:2007/11/08 23:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルマクロ印刷時にプリンタを指定できますか?

エクセル2002を使用しています。VBAはまったくわかりません。
マクロの自動登録で印刷を記録すると、通常使うプリンタから
出力されるようですが、LANでプリンタ複数使用可能な環境です
ので、いちいち通常使うプリンタを変更するのではなく、マクロ
実行時にプリンタを選択したく思います。
 因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー
したSheet2を印刷するというマクロです。このマクロのどの部分に
コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか?
もしくはマクロではプリンタを選択できないのでしょうか?
どうぞよろしくお願いいたします。

******************************************************************
Sub 印刷()
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Sheet1").Select
End Sub
*******************************************************************

エクセル2002を使用しています。VBAはまったくわかりません。
マクロの自動登録で印刷を記録すると、通常使うプリンタから
出力されるようですが、LANでプリンタ複数使用可能な環境です
ので、いちいち通常使うプリンタを変更するのではなく、マクロ
実行時にプリンタを選択したく思います。
 因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー
したSheet2を印刷するというマクロです。このマクロのどの部分に
コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか?
...続きを読む

Aベストアンサー

#4です。

WinAPIを使ってプリンタ一覧を取得。
VBAでActivePrinterを取得。
ユーザーの指示によりActivePrinterを設定。
印刷処理。
ActivePrinterを元に戻す。

ってことをやるには相当の技術力が必要になります。
ここはひとつ、
Application.Dialogs(xlDialogPrint).Show
こうして印刷ダイアログを表示するだけにとどめておいてはどうでしょうか。
あとはユーザーが好きなプリンタを選択して[OK]を押せば印刷されます。

Qエクセルマクロで印刷プリンタを指定する方法

表題のとおりなんですけと、エクセルのVBAでの印刷命令はできますが、複数あるプリンタから特定のプリンタを指定したいのですが、なにかいい方法ありませんか?

Aベストアンサー

印刷のポートがLPT1:(プリンタポート)ならば

例:プリンタ名 自分のプリンタ
Application.ActivePrinter = "自分のプリンタ on LPT1:" 'プリンタの指定
ActiveWindow.SelectedSheets.PrintOut '印刷

印刷ポートがLAN内のプリンタサーバーの場合

例1:プリンタ名 事務室プリンタ
Application.ActivePrinter = "事務室プリンタ on Ne01:"
ActiveWindow.SelectedSheets.PrintOut

例2:プリンタ名 会議室プリンタ
Application.ActivePrinter = "会議室プリンタ on Ne02:"
ActiveWindow.SelectedSheets.PrintOut

Ne01 Ne02はLANにより異なります。

QApplication.Dialogs(xlDialogSaveAs)でキャンセルの取得

エクセル2000です。
Sheet1を複製し名前をつけて保存するマクロを書きました。
以下のとおりですが、キャンセルされた場合でも「保存しました」のメッセージが出てしまいます。
キャンセルされたことを取得するにはどう書けばいいでしょうか?

Sub tesy01()
Dim ns As Workbook
Dim fn As String
Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
fn = .Range("A1") & Format(Date, "yymmdd")
End With
Application.Dialogs(xlDialogSaveAs).Show ARG1:=fn & ".xls", ARG2:=1
ns.Close (False)
Set ns = Nothing
MsgBox "保存しました。"
ThisWorkbook.Activate
Sheets("Sheet1").Activate
End Sub

エクセル2000です。
Sheet1を複製し名前をつけて保存するマクロを書きました。
以下のとおりですが、キャンセルされた場合でも「保存しました」のメッセージが出てしまいます。
キャンセルされたことを取得するにはどう書けばいいでしょうか?

Sub tesy01()
Dim ns As Workbook
Dim fn As String
Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
...続きを読む

Aベストアンサー

Msgboxを使ったりして
Application.Dialogs(xlDialogSaveAs).Show
の戻り値を確認してみればわかるが,
OKを押した時はTrueで
Cancelを押した時はFalseだ。

#MSDNのどのページに載っているかよくわからんかった。
#そういやあ、http://support.microsoft.com/kb/139723/en-us の method2との違いはなんだろう?

Qエクセルのマクロで印刷プレビューを閉じる方法

印刷プレビューをだすなら
PrintPreviewでわかるのですが、表示されたプレビュー画面を、自分で「閉じる」または「印刷」ボタンを押さなくとも閉じるにはどう書けばいいのでしょうか?

Aベストアンサー

こんにちは。興味があったんで追試してみました。
下記の順に並べ変えると動きます。

For i = 1 To 5
Range("D4") = i * 100
SendKeys "%c"
ActiveSheet.PrintPreview
Next

恐らく、プリントプレビューはモーダルで、ActiveSheet.PrintPreview を発行後は、プリントプレビューを閉じるまで、マクロが停止すると思われます。
↑で動くのは、キーを先送りし、開いたと同時に閉じるので、マクロが止らずに進んでいるだけで、動作としては不安定(端末によってはうまくいかない。)です。
実際↑を走らすと、アクティブセルに不明な空白が入力され、入力待ち状態でマクロが終了します。

なにかしらの事情があってのご質問とは思いますが、やはりプリントプレビューはユーザに閉じて頂くのが本筋ではないでしょうか。

Q【Excel VBA】プリンタのプロパティダイアログの表示

Excel2003を使用しています。

あるシートのページ設定等をマクロの記録をとって、コードを書きました。
ページ設定が済んだら、プリンタのプロパティダイアログを表示させたいのですが、ここまでをマクロで処理することは可能でしょうか?

このシートを印刷するときは、A3用紙(横)1枚にA4(縦)で作成されているデータを2ページ印刷(2ページを1ページに集約印刷)したいので、ページ設定が済んだら、プリンタのオプション設定を忘れないよう、プリンタのプロパティダイアログが自動で表示されるようにできないかと思い、質問させていただきました。

私個人が印刷する際は、ここまで必要ないのですが、会社の年配の方が上記の設定で印刷するのに、わからない(覚えきれない)というので、何か良い方法はないかと考えているところでして…(^_^;)
この点に関しても、アドバイスをいただけると嬉しいです。
よろしくお願いします。

Aベストアンサー

Keyストロークを送る SendKeysステートメントというのがあります。
実行時の状況によっては今ひとつ確実性に欠けますが、
安易に考えるなら

Sub Macro1()
  SendKeys "%o"
  Application.Dialogs(xlDialogPageSetup).Show
End Sub

...こんなコードで良いかもしれません。

QエクセルVBAで手差しトレイを指定させたい。

エクセル2010です。
だいぶ端折ってますが、以下のようなコードでDATAシートのデータをInput用シートに転記し、それを参照しているPrint用シートを連続して印刷したいのです。
その歳、印字する用紙はA4等の定形サイズではない特殊な台紙なので、プリンターで「手差し」トレイに入れます。
自分の端末だとプリンターは決まっているので指定できると思うのですが、このエクセルを使う人が特定できず、どのようなプリンターなのかわかりません。(少なくとも手差しトレイはあります)
そのためPrint実行前にユーザーにトレイを選択してもらうにはどのようなコードを書き加えればよいでしょうか?ご教示いただければ幸いです。

Sub test01()
Dim ws(2) As Worksheet
Dim i As Long, x As Long
Set ws(0) = Sheets("DATA")
Set ws(1) = Sheets("Input用")
Set ws(2) = Sheets("Print用")
x = ws(0).Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To x - 1
ws(1).Range("A1:N1").Value = ws(0).Range("A1:N1").Offset(i).Value
ws(2).PrintOut
Next
End Sub

エクセル2010です。
だいぶ端折ってますが、以下のようなコードでDATAシートのデータをInput用シートに転記し、それを参照しているPrint用シートを連続して印刷したいのです。
その歳、印字する用紙はA4等の定形サイズではない特殊な台紙なので、プリンターで「手差し」トレイに入れます。
自分の端末だとプリンターは決まっているので指定できると思うのですが、このエクセルを使う人が特定できず、どのようなプリンターなのかわかりません。(少なくとも手差しトレイはあります)
そのためPrint実行前にユーザー...続きを読む

Aベストアンサー

こんにちは。

「プリンターの設定」ダイアログを使うのはどうでしょうか?

Application.Dialogs(xlDialogPrinterSetup).Show
これで使えます。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcel VBA の印刷後の判定

いつもお世話になっています。
Excel VBA で不明な点が出てきたので質問させていただきます。

処理順として
1.AccessからExcelを出力し、出力後はそのまま表示しておく。
2.表示してあるExcelをユーザーが印刷する。
3.印刷したシートの見出しの色を変更する。

の3つなのですが、3の処理をExcelマクロで実行する際に、
印刷が実行されたかどうかの判別方法がわからないのです。

印刷直前でも構わないと思い、BeforePrint イベントを調べて使用してみたのですが、
印刷プレビューでもイベントが走ってしまい、ダメでした。

印刷実行なのか、プレビューなのか区別が出来る方法があればとも思っているのですが…。

ご存知の方、ご教授お願いいたします。

Aベストアンサー

こんにちは。

印刷したものと、プレビューしたもののイベントの区別をしたいということですね。いくつか方法を考えてみましたが、実際に印刷したかどうかは、API関数でしか把握できませんが、かなり大掛かりで、リスクを背負うことになってしまいます。私としては、あまりお勧めできません。

私が、実際の開発で、Excelの中だけでどう考えるかというと、あまり良い案は浮かびません。

'<ThisWorkbook>
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If PrinterFlg = False Then
 Cancel = True
End If
End Sub

'<標準モジュール>
Public PrinterFlg As Boolean

'<シートモジュール>
Private Sub CommandButton1_Click()
PrinterFlg = True
 ActiveSheet.PrintOut
 '他の作業
PrinterFlg = False
End Sub

こうすれば、PrinterFlg がTrue にならない限りは、印刷もプレビューもされませんので、後は、開発側の設けたボタンで、印刷が把握できます。そのボタンを押した時のみ、有効になるわけです。ユーザー側に余計なことをしてもらいたくない場合は、メニューバーやツールバーも隠します。自分が望むボタンだけを置くことにします。

ここまでは良いと思いますが、しかし、印刷プレビューを許す場合は、印刷プレビュー画面から印刷が可能ですから、そこでは、もう BeforePrint イベントが利きません。印刷プレビューのイベントで、例えば、PDF出力などのダミーのプリンタ・ドライバに切り替えるぐらいしか、今のところ思いつきません。やはり、API関数での制御になってしまいます。

根本的にPrint Out Preview と Print Out の違いというは、Excel上ではないかもしれません。

ちなみに、印刷プレビューのイベントというのは、以下のようなものです。

'Class 1
Public WithEvents myPrinterButton As CommandBarButton

Private Sub myPrinterButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  Application.ActivePrinter = " 別のプリンタドライバ "
End Sub

'標準モジュール
Dim myClass As Class1

Sub PreviewEventSetting()
Set myClass = New Class1
 Set myClass.myPrinterButton = Application.CommandBars("Standard").FindControl(, 109)
End Sub

なお、PreviewEventSetting を、ThisWorkbook の Open イベントから、Call すればよいと思います。

こんにちは。

印刷したものと、プレビューしたもののイベントの区別をしたいということですね。いくつか方法を考えてみましたが、実際に印刷したかどうかは、API関数でしか把握できませんが、かなり大掛かりで、リスクを背負うことになってしまいます。私としては、あまりお勧めできません。

私が、実際の開発で、Excelの中だけでどう考えるかというと、あまり良い案は浮かびません。

'<ThisWorkbook>
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If PrinterFlg = False Then
 Cancel = Tr...続きを読む

Qエクセルのマクロでプリンタを指定したいのですが

エクセルのマクロで共有のネットワークプリンタを指定しているのですが

Application.ActivePrinter = "*********** on Ne**:"

Ne**の部分がパソコンを再起動すると変更されてしまうようでうまくいきません。~on Ne**:の記述なしでプリンタを指定する方法はないでしょうか?

Aベストアンサー

こんにちは。
PrintOutメソッドの引数のActivePrinterはポート番号がなくても指定できますので、
印刷時に指定するようにしてはどうでしょうか。
(例)
Sheets(1).PrintOut Preview:=True, ActivePrinter:="EPSON LP-XXXX"

Qエクセル マクロ実行時エラー’1004’

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
    ReDim Preserve 氏名(行)
    社員CD(行) = Cells(行 + 1, 1).Value
    氏名(行) = Cells(行 + 1, 2).Value
    行 = 行 + 1
  Loop Until Cells(行, 1) = ""
  人数 = 行 - 2
  For 回数 = 1 To 人数
    Sheets(評価シート).Select
    Sheets(評価シート).Copy after:=Sheets(評価シート)
    ActiveSheet.Name = 氏名(回数)
    Cells(4, 5) = 氏名(回数)
    Cells(4, 3) = 社員CD(回数)
  Next 回数
End Sub
*****************************
よろしくお願いします

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
   ...続きを読む

Aベストアンサー

ひょっとしてこれに該当するのかな?

Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する
http://support.microsoft.com/kb/210684/ja


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング