- 締切済み
VBAで印刷ページの指定をする場合について
VBA初心者です。よろしくお願いいたします。 次のVBAをエクセルで作成し、D:testというフォルダーにあるtest1.docxのB4判からA4判への縮小印刷と最初の1ページ目の印刷を試みています。結果として 縮小印刷にはなるのですが、1ページ目のみの印刷ではなくtest1.docxの全てのページが印刷されてしまいます。「PrintZoomPaperHeight:=16838」の記述に続けて「 , Pages:="1"」としてtest1.docxの最初の1ページだけ印刷する記述をしたのですが、どのような記述にすればよいのかご教示頂ければ幸いです。 Sub 印刷() Dim wdApp As Object, document As Object Const DIR_PATH As String = "D:test" Set wdApp = CreateObject("Word.Application") wdApp.Visible = True Set document = wdApp.Documents.Open(DIR_PATH & "\" & "test1.docx") document.PrintOut PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=11906, PrintZoomPaperHeight:=16838 , Pages:="1" document.Close wdApp.Quit End Sub
- dugout2017
- お礼率100% (5/5)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17068)
この質問に上げているVBAコードはどこからコピーしたのか(学んだのか)判らないが、複雑化しているように思う。 ーー だから単純に 「Word VBA ページ指定 印刷」でGoogleなどで照会し下記のような記事が出てくる。 それを実行したら、それらしく印刷できたが。 第2ページのみの例 (2-3ページなら解説の通りのページ番号を2つ指定し、真中にーを入れる書き方。 (すべて半角文字数字)) Sub ページを指定して印刷する() ActiveDocument.PrintOut _ Range:=wdPrintRangeOfPages, _ Pages:="2" End Sub 実際の例文をワードの文書に、コピペしてやってみると、うまく行く(限定的にページ単位で、指定ページ部分を印刷する)ようだが。ただしテキストだけの文書でしかテストしてない。 文書に図表などあると、むつかしい場面に出くわすかも。 == ページというオブジェクトはParagraphなどと違い、微妙な位置づけのようだ。ユーザーが直接決める ものではない場合が多い。 フォントサイズを1文字いじくるだけで、所属ページ数がかわる不安定なものだ。 日本人は文書に対し、まずページでイメージしているのかもしれないが、ワード設計者は、そこを第1重視の仕組ではないようだ。だからWindow関連を探したり、大変。 質問の標題には「WordVBAの質問」を明記せよ。エクセルVBAと違い、ここで回答をあきらめる。 WordVBAは解説本が少なく、WEB記事などを頼らざるを得ないが、仕組み(Objectsなど)の複雑さで 習得は難しい。よほど業界関連でもない限り、本腰を入れて時間を覚悟できないなら、避けてとおるべきだ。(印刷、文章家、特許、法曹関連、官庁届け出文書の多い人などがVBAに関心を示しているよう?) 講習も東京中心で機会も少ないようだ。
関連するQ&A
- Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く
以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc" 'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub
- 締切済み
- Visual Basic
- VBAに範囲を指定して印刷
特定のセルに数字を入力することでVLOOKUPで印刷ページを 検索して指定できるシートを作成しています。 下記のようなVBAを作成しました。 印刷開始ページと印刷終了ページを指定する場合、 セルの指定はどのようにすれば、よいのでしょうか? 開始ページと終了ページが同じセルの為、 開始ページ=Rnage("セル") 終了ページ=Rnage("セル") としてしまいますと、エラーが出てしまいます。 Sub 印刷() Dim S As Long Dim B As Long S = Application.InputBox("印刷開始ページを入力", Type:=1) If 開始ページ = 0 Then Exit Sub B = Application.InputBox("印刷終了ページを入力", Type:=1) If 終了ページ = 0 Then Exit Sub ActiveSheet.PageSetup.Order = xlOverThenDown ActiveWindow.SelectedSheets.PrintOut _ From:=S, To:=B, Collate:=True End Sub 宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- VBAでファイルを消したい
こんばんわ! VBAでエクセルファイルをバックアップしながら使用しているのですが、10個以上ファイルが溜まったら一番古いものを消したいです。 途中まではできているのですが、古いファイルを選択する方法が分かりませんToT 途中までのソースを乗せますので、アドバイスの程よろしくお願いいたします。 ================== Private Sub backup_bot_Click() Dim Path As String, WSH As Variant Dim fc As Long Dim fn As String 'マイドキュメントにバックアップ Set WSH = CreateObject("WScript.Shell") Path = WSH.SpecialFolders("MyDocuments") & "\test" If Dir(Path, vbDirectory) = "" Then MkDir (Path) End If 'ファイルコピー FileCopy "c:test_date\aaa.xls", Path & "\aaa" & Format(Now, "yyyymmdd") & ".xls" 'ファイル数確認 fn = Dir(Path & "\aaa*.xls") Do While fn <> "" fc = fc + 1 fn = Dir() Loop '10件以上消去 If fc > 10 Then 'ここが分かりません! End If End Sub ================== あ~ちなみにoffice2003エクセルを使用しています。 XP以降のOSで動かしたいです!
- ベストアンサー
- その他MS Office製品
- 返ってくる値が違う
VBAでフォルダの中のファイルの個数を取得するコードなのですが Sub test1() Dim i As Long, buf, Path As String Path = ActiveWorkbook.Path & "\" buf = Dir(Path & "*.*") Do While buf <> "" i = i + 1 buf = Dir() Loop MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & i & "個のファイルがあります。" End Sub Sub test2() Dim Path As String Dim i As Long, FSO As Object, f As Object Path = ActiveWorkbook.Path & "\" Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & FSO.GetFolder(Path).Files.Count & "個のファイルがあります。" Set FSO = Nothing End Sub Test1とtest2では返ってくる値が違うのですが なぜでしょうか? Test2はフォルダの個数も取得されてるのですか?
- 締切済み
- Visual Basic
- Excel2007のVBAにて印刷を指定枚数設定しようと思いましたが、
Excel2007のVBAにて印刷を指定枚数設定しようと思いましたが、下記マクロでテストしたところ 2枚ではなく、何故か1076枚を印刷しようとしてきます。 印刷範囲も2枚しかないので、どこがおかしいのかが分りません。 分かる方いましたらご教授願います。 Sub Macro1() dim as i integer i = 2 ActiveWorkbook.PrintOut Copies:=i End Sub
- ベストアンサー
- オフィス系ソフト
- RmDirでフォルダが削除できない vba
http://www.k1simplify.com/vba/tipsleaf/dir.html を参考にしたのですが Sub test() RmDir "\\test-PC\Users\Public\test" End Sub でフォルダの削除ができると思ったのですが パス名が無効ですというエラーになってしまいます。 ネットワークパスだからダメなのでしょうか? パスはフォルダからコピペしたので間違いないです。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで場所の指定
また質問させていただきます。先日Wendy02さんに以下のコードを お教えいただきました。 少し内容を変更したくまた質問をさせていただきます。 移動前のフォルダ名をあらかじめフルパスで指定してある セルがあるのですが、そのセルには C:\Documents and Settings\user\デスクトップ\Test1Fold とあるとして、そのパスを取得して SourceDir = SourceFolder & "Test1Fold\" '末尾に\ は付けなくてよい の部分は移動前のフォルダが変わっても対応できるようにしたいのですが、どのようにするのかわかりません。どのように記述すればいいでしょうか?よろしくお願いします。 Sub MoveDirectries() Dim SourceFolder As String Dim SourceDir As String Dim DestFolder As String Dim DestDir As String Dim ArDirs() As String Dim FOLname As String Dim i As Integer Dim v As Variant Dim ret As Integer 'Win 2000以上 Const MYCMD1 As String = "CMD /C MOVE " '末尾は半角スペースを開ける SourceFolder = ActiveWorkbook.Path & "\" 'ベースのフォルダ(元)\ は必ず付ける DestFolder = ActiveWorkbook.Path & "\" 'ベースのフォルダ(先)\ は必ず付ける SourceDir = SourceFolder & "Test1Fold\" '末尾に\ は付けなくてよい DestDir = DestFolder & "Test1AFold\" '最終フォルダに \ があったら省く If Right(SourceDir, 1) = "\" Then SourceDir = Mid$(SourceDir, 1, Len(SourceDir) - 1) If Right(DestDir, 1) = "\" Then DestDir = Mid$(DestDir, 1, Len(DestDir) - 1) ReDim Preserve ArDirs(i) FOLname = Dir(SourceDir & "\", vbDirectory) Do While FOLname <> "" If FOLname <> "." And FOLname <> ".." Then If (GetAttr(SourceDir & "\" & FOLname) And vbDirectory) = vbDirectory Then ReDim Preserve ArDirs(i) ArDirs(i) = FOLname i = i + 1 End If End If FOLname = Dir Loop 'フォルダの下のフォルダを作るのは一回のみ For Each v In ArDirs() If Dir(DestDir & "\" & v, vbDirectory) = "" Then ret = Shell(MYCMD1 & """" & SourceDir & "\" & v & """" & " " & """" & DestDir & """") ElseIf Dir(DestDir & "\" & v & "\" & v, vbDirectory) = "" Then ret = Shell(MYCMD1 & """" & SourceDir & "\" & v & """" & " " & """" & DestDir & "\" & v & """") End If Next v End Sub
- ベストアンサー
- オフィス系ソフト
- アプリからVB(Form)
初心者ですが教えていただきませんか? やりたい事(順序) 1. Form1が開いています。(ノーマル表示) 2. Form1のcommand1ボタンを押す事により 3. Form1が最小化され 4. WORDが起動され、ファイルが開きます。(WORD最大表示) 5. WORDが終了(閉じられた時) 6. Form1が開きます。(ノーマル表示) 5番と6番で詰まっております。 ご教授をお願い致します。 コード Private Sub Command1_Click(Index As Integer) Dim wdApp As Object Dim ThisPos As Long WindowState = vbMinimized Set wdApp = CreateObjec("Word.Application") wdApp.Visible = True Set wddocuments = wdApp.Documents.Open("C:\test.doc") ThisPos = Application.WindowState 'アプリの画面表示を変更する If ThisPos = wdWindowStateNormal Then wdApp.WindowState = wdWindowStateMaximize Else wdApp.WindowState = wdWindowStateMaximize End If Set wdApp = Nothing End Sub
- ベストアンサー
- Visual Basic
- EXCELのVBAでWORDが開いてあるかチェック
EXCELのVBAで特定のWORDが開いてあるかチェックしたいのですが、 あるフォルダにWORD文章があるかチェック set appWord=GetObject(,"Word.Application") Msgbox appWord.Documents.count なければエラー処理で終了 そのWORD文章の名前を取得 docFile=.... (仮にABC.docxという名前だとしますと) そのWORD文章が誰かが使っている(開いているか)チェックしたいのですが.. 1.使われているなら、-$ABC.docxが作られているはずだから dir(-$ABC.docx)として、あれば使われていると判断したいのですが、 実験するとdir(-$ABC.docx)は、使われて実際にそのファイルがあっても falseになってしまいます。dir関数でなくてもいいので、このファイルの 有無を調べる方法はないでしょうか? 2.その他、読み取り属性とかをみて判断する方法はないでしょうか? ただし、使われている場合は、10秒ごとにチェックをいれて、 使われていない場合に、初めて開くので、エラー処理で逃げるのは ダメなのですが。
- ベストアンサー
- Excel(エクセル)
- ExcelのVBAでWEBページを開くのが遅い
よろしくお願いいたします。 現在社内システムのデータをExcelに落とすVBAを作っています。 単純に、 sub test () URL = "http://..." Dim xls As Workbook Set xls = Application.Workbooks.Open(URL) end sub のようなものを作成して実行したのですが、 Set xls = Application.Workbooks.Open(URL) の所で50~60秒ほど時間がかかってしまいます。 もう少し早くする方法はないのでしょうか?
- 締切済み
- Excel(エクセル)
お礼
ご回答ありがとうございます。 PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=11906, PrintZoomPaperHeight:=16838 , Pages:="1"の記述は、Wordのマクロの記録結果から、その一部をExcelのマクロへコピペしたものです。縮小については動作しています。 また、質問内容の印刷の実行は、エクセルのマクロに記述して、エクセル上でそのマクロを実行し、パソコンのフォルダーに保存されているWordファイルを印刷するという内容です。ご教示いただいたグーグル検索などで、調べてもう一度トライしてみます。ありがとうございました。