คำถามติดแท็ก vba

Visual Basic สำหรับแอปพลิเคชัน เซตย่อยของ Visual Basic ที่ใช้ในแอปพลิเคชัน Microsoft Office ทั้งหมด พิจารณาใช้แท็กนี้พร้อมกับแท็กสำหรับแอปพลิเคชันเฉพาะที่เป็นปัญหา คำถามที่ดีเกี่ยวกับ VBA โดยทั่วไปมีรหัสบางส่วนและขอวิธีแก้ไขปัญหาเฉพาะ คำถามที่ถามถึงวิธีแก้ไขทั้งหมด (โปรดให้รหัส / วิธีการทำสิ่งนี้กับ VBA) เป็นหัวข้อนอกหัวข้อและจะถูกปิดในวงกว้างเกินไป

1
คัดลอกข้อมูลจากไฟล์ MS Word หลายไฟล์ไปยัง Excel โดยใช้ VBA
ฉันรู้ว่าคำถามนี้ถูกถามแล้ว (การคัดลอกข้อมูลจากเอกสารคำหลายคำไปยังแผ่นงาน excel ) สิ่งที่ฉันไม่สามารถใช้คำตอบ ฉันสดชื่นกับ VBA แต่ฉันคิดว่าฉันสามารถจัดการกับมันได้ ฉันผิดไป. ฉันพยายามใช้รหัสที่มีให้ในเธรดที่กล่าวถึงเพื่อแยกเอกสาร Word ในตอนแรกด้วยการแก้ไขบางอย่างจากนั้นเพียงแค่ใช้รหัสต้นฉบับ น่าเสียดายที่ฉันได้รับข้อผิดพลาด "ต้องใช้วัตถุ" รหัสที่ให้ไว้ด้านล่าง เอกสารที่ฉันพยายามรับข้อมูลคือไฟล์ Word 2003 (ก่อนอื่นฉันพยายามเปลี่ยน "docx" เป็น "doc" จากนั้นบันทึกเอกสารใน docx และใช้สคริปต์ต้นฉบับไม่ช่วย) สิ่งหนึ่งที่พวกเขามีในความเป็นจริงการสแกนและ ocr'ed เอกสารที่เป็นกระดาษเพื่อให้ ... ก)มากที่สุดของตารางที่อยู่ภายในจะถูกเก็บไว้ในกรอบ (ไม่ทราบว่ามีการเปลี่ยนแปลงอะไรที่คาดคะเนไม่พิจารณาโครงสร้าง XML ของพวกเขา) ข )เมื่อฉันพยายามบันทึกเป็น docx แอปพลิเคชันจะเสนอให้บันทึกเป็น rtfs ก่อน ดังนั้นบางทีพวกเขากำลังอยู่ในความเป็นจริงไฟล์ rtf ไม่ใช่. doc? Sub macro1() Dim xl As Object Set …

3
วิธีใช้ Excel 2010 VBA เพื่อตั้งค่าสีของเส้นอนุกรมการเติมเครื่องหมายและสีของเส้นเครื่องหมาย
ฉันพยายามเขียนรูทีนย่อย Excel 2010 VBA เพื่อจัดรูปแบบแผนภูมิตามมาตรฐานที่กำหนดไว้ล่วงหน้า (เช่นกำหนดโดยฉัน) คุณลักษณะเฉพาะที่ฉันต้องการตั้งค่าเป็นเพียงคุณลักษณะที่มีให้ผ่านหน้าต่าง Format Data Series ที่เปิดขึ้นเมื่อดับเบิลคลิกหนึ่งครั้งบนชุดข้อมูล ในความพยายามที่จะค้นหาชื่อของคุณสมบัติต่าง ๆ ที่ฉันจะต้องตั้งค่าฉันบันทึกเป็นแมโครการเปลี่ยนแปลงที่ฉันทำกับสไตล์ของชุดข้อมูล อย่างไรก็ตามถึงแม้ว่าฉันสามารถตั้งค่าสีของเส้นและสีของเส้นบอกตำแหน่งเป็นสีที่แตกต่างกันผ่านหน้าต่างชุดข้อมูลรูปแบบมาโครที่บันทึกไว้ นอกจากนี้เมื่อฉันเรียกใช้แมโครจริงๆมีปัญหาสองประการ ครั้งแรกแม้จะมีความจริงที่ว่าแมโครที่บันทึกไว้อ้างถึงคุณสมบัติการเติมเครื่องหมาย .ForeColor.Brightnessบรรทัดนั้นสร้างข้อผิดพลาดเมื่อเรียกใช้งานแมโคร ข้อผิดพลาดระบุว่า“ วิธีการสว่างของวัตถุ ColorFormat ล้มเหลว” ประการที่สองรหัสที่บันทึกไว้จริง ๆ แล้วตั้งค่าสีของตัวทำเครื่องหมายและบรรทัดหลักสำหรับซีรี่ส์ สีของเส้นจากนั้นทั้งคู่ก็ตั้งค่าเป็นสิ่งที่ฉันต้องการสำหรับสีเส้นหลัก ฉันจะตั้งค่าการเติมเครื่องหมาย, สีเส้นเครื่องหมายและสีเส้นได้อย่างไร Sub Macro1() ' ' Macro6 Macro ' On Sheet 1 there is a single embedded chrt ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection(1).Select With Selection.Format.Fill .Visible …

1
เปลี่ยนการเปิดเผยช่องทำเครื่องหมายไม่ทำงาน
ฉันมีรหัสต่อไปนี้ซ่อนแถวในแผ่นงาน แต่แผ่นงานถูกทิ้งไว้กับช่องทำเครื่องหมายที่สร้างขึ้นแบบไดนามิกยังคงมองเห็นได้ ความคิดใด ๆ Private Sub SpinButton1_Change() Application.ScreenUpdating = False week = Me.Range("b1").Value countcell = ActiveSheet.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count For i = 4 To countcell pweek = Me.Cells(i, 2).Value 'load the planned week value mycont = "ckboxPrintLabels" & i If pweek <> week Then CheckBoxes(mycont).Visible = False Rows(i).EntireRow.Hidden = True MsgBox mycont & …

2
ตัวห้อยและตัวยกใน Excel
ฉันมีแผ่น XL ที่มีสูตรทางเคมี - ซึ่งโดยทั่วไปเป็นเพียงตัวอักษรที่มีตัวห้อยและตัวยกตัวเลข ฉันสามารถบันทึกเป็นหน้า html และรับอิลิเมนต์ <sub> และ <sup> html ได้ แต่จะถูกฝังไว้ภายใต้มาร์กอัพและ css อื่น ๆ มากมาย มีวิธีที่จะได้สูตรสำหรับเซลล์ที่มี H 2 O อย่างง่ายๆหรือเปล่าเช่นมาร์กอัปเช่นนี้: H<sub>2</sub>O

1
ปิด“ ลาก Fill Series” ใน Excel
ฉันกำลังมองหาการปิดฟังก์ชันลากเติมซีรีส์เท่านั้น ฉันต้องการให้ผู้ใช้แผ่นงานของฉันสามารถลาก COPY ลงเท่านั้น ฉันปิดคุณลักษณะในการตั้งค่าซึ่งปิดใช้งานการลากลงทั้งหมด ฉันจะมีความสุขกับเรื่องนี้ แต่แน่นอนว่าสิ่งนี้ใช้ได้เฉพาะในการตั้งค่า Excel ของฉันเองผู้ใช้ชีตคนอื่น ๆ ก็จะสามารถใช้บริบทของการตั้งค่าของพวกเขาได้เช่นกัน ฉันสงสัยว่ามีวิธีใดใน VBA ที่จะเปิดใช้คุณลักษณะการเติมซีรี่ส์หรือปิดการใช้งานคุณสมบัติการลากทั้งหมด?

2
ข้ามการยืนยันการเลือกไฟล์ Excel สำหรับการเชื่อมต่อข้อมูลด้วยไฟล์ข้อความที่ไม่ใช่. txt
ฉันมีสมุดงาน Excel ที่ประมวลผลเอาท์พุทแบบจำลองจากโปรแกรมอื่น โปรแกรมนั้นสร้างไฟล์เอาต์พุตข้อความล้วนที่คั่นด้วยช่องว่างด้วยส่วนขยาย".plt" ฉันมีการเชื่อมต่อข้อมูลใน Excel เพื่อนำข้อมูลเหล่านั้นมาใช้ แต่ต้องการการคลิกมากกว่าที่ฉันต้องการ ปัจจุบันขั้นตอนการทำงานคือ: เรียกใช้รุ่นอื่น ๆ ใน Excel คลิก Data-> Refresh All ในกล่องโต้ตอบไฟล์ที่เปิดขึ้นให้คลิกที่"Text Files (* .prn, * .txt, * .csv)" ดึงลงปรากฏ - คลิกที่: "แฟ้มทั้งหมด (* * * * *.)" เลือกชื่อไฟล์จากรายการ (ชื่อไฟล์ไม่เคยเปลี่ยนแปลง - เสมอ"Output.plt" ) เลือก"นำเข้า" จากที่นี่จะจดจำการตั้งค่าทั้งหมดสำหรับการเชื่อมต่อข้อมูล - ตำแหน่งข้อความเป็นคอลัมน์ ฯลฯ เนื่องจากชื่อไฟล์ของฉันไม่เคยเปลี่ยนแปลง แต่ฉันหวังว่ามันจะจำชื่อไฟล์ของฉันได้ดังนั้นฉันจะมีหนึ่งหรือสองเท่านั้น จำนวนคลิกแทนที่จะเป็น 5 ฉันพยายามบันทึกมาโครโดยทำตามขั้นตอนเหล่านี้ทั้งหมด แต่สิ่งเดียวที่ปรากฏใน …

2
วิธีการใช้งาน Addin ของ Excel 2010
ฉันสร้างแมโครโดยใช้ vba โดยใช้ Excel 2010 ฉันต้องทำให้มันพร้อมใช้งานสำหรับทุกคนในทีมของฉันด้วยการเปลี่ยนเป็นโปรแกรมเสริม ดังนั้นฉันเอามาโคร และเปิดสมุดงานใหม่ วางโค้ดในโค้ดจากแมโคร จากนั้นบันทึกเป็นไฟล์. xlam จากนั้นเพิ่มเข้าไปในเป็น addin ในสเปรดชีต excel ของฉันดังนั้นจึงเริ่มต้นและแสดงขึ้นภายใต้ปุ่ม addins พร้อมเครื่องหมายถูกถัดจากชื่อ ฉันคิดว่าฉันทำถูกต้องอย่างไรก็ตามเมื่อฉันลองใช้คีย์ ctrl + "ตัวอักษรที่ฉันใช้" ซึ่งเป็นชุดการกดแป้นพิมพ์ที่ฉันใช้เมื่อฉันสร้าง Addin ไม่มีอะไรเกิดขึ้น? ฉันเป็นมือใหม่ที่มีของ excel vba ดังนั้นนี่เป็นวิธีที่ถูกต้องในการสร้าง addin เพื่อให้ผู้อื่นใช้หรือไม่ ควันหลง: การสร้าง Addin สำหรับ Excel 2010 จากนั้นการสร้างรายการ Ribbon ในแถบเครื่องมือนั้นซับซ้อนเกินไปสำหรับสิ่งที่ฉันพยายามทำ ดูเหมือนว่าคุณไม่สามารถใช้ชุดค่าผสมเพื่อเรียกใช้งาน addin ได้ ดังนั้นฉันเลือกที่จะใช้แมโครระดับโลกและใช้งานได้ นี่คือบทช่วยสอนที่ฉันติดตามเพื่อสร้างมาโครสากล

1
Regex เพื่อค้นหาเครื่องหมายจุลภาคยกเว้นเครื่องหมายจุลภาคภายในสตริงที่คั่นด้วยเครื่องหมายคำพูดคู่
ฉันต้องการจัดการไฟล์. csv แบบปิดโดยไม่เปิดผ่านปุ่มบน Excel AddIn ฉันสามารถทำตามทุกขั้นตอนได้ แต่มีปัญหากับการค้นหา regex ที่จะทำให้สำเร็จ (มีหลายคำตอบสำหรับคำถามที่คล้ายกันในเน็ตบนกระดานประกาศต่าง ๆ และไม่มีใครทำงานได้จริง ต่อไปนี้เป็นตัวอย่างโค้ดพร้อมสิ่งที่โซลูชันควรมีลักษณะ: ฉันลองใช้ regexp หลายตัวแล้ว แต่ดูเหมือนจะไม่พบวิธีแก้ปัญหา ความพยายามที่ใกล้ที่สุดของฉันคือ: ฉันรู้สึกว่าต้องมีความเป็นไปได้ที่จะทำมัน ความช่วยเหลือเกี่ยวกับตำแหน่งที่ฉันจะผิดหรือเปล่า?

2
วิธีการเรียกใช้บรรทัดคำสั่งโดยใช้ vba เพื่อแสดงรายการชื่อไฟล์
ฉันพยายามเขียนโค้ด vba ที่ส่งบรรทัดของรหัสไปยังพรอมต์คำสั่งและดำเนินการ ฉันมีส่วนนั้นลง แต่ฉันต้องการความช่วยเหลือในการรับรหัสจริงให้ทำงาน ฉันต้องการแสดงรายการไฟล์ทั้งหมดในโฟลเดอร์เฉพาะที่เป็นนามสกุลไฟล์. doc แต่ฉันต้องการแยกอักขระสามตัวแรกของชื่อไฟล์ที่ได้รับการพิมพ์ไปยังไฟล์ข้อความเอาต์พุตของฉัน (หมายเหตุ: ฉันกำลังใช้ vba เพราะนี่เป็นหนึ่งในคำสั่งที่แตกต่างกันหลายคำที่ฉันต้องการใช้กับมาโคร vba เดี่ยวและแบตช์ไฟล์ถูกบล็อกสำหรับฉันดังนั้นฉันต้องการทำงานโดยตรงกับพรอมต์คำสั่ง) รหัสต่อไปนี้ใช้งานได้และให้ชื่อไฟล์ที่ไม่มีนามสกุลไฟล์ (เช่นABC201704.docจะกลับมาเป็นABC201704 ) %comspec% /c for %i in (C:\Test\ABC*.doc) do @echo %~ni >> C:\Test\Output.txt อย่างไรก็ตามฉันไม่ทราบวิธีการแก้ไขเพื่อไม่ให้มี 3 ตัวอักษรแรก (เช่นมันจะส่งคืน201704แทนABC201704 ) ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ฉันลองใช้ลิงค์ต่อไปนี้ แต่ฉันไม่สามารถเข้าใจวิธีการทำงานให้กับสถานการณ์ของฉัน วิธีใดก็ตามที่จะได้รับอักขระสองสามตัวแรกของชื่อไฟล์ในการเขียนโปรแกรมไฟล์แบตช์ DOS

2
Excel 2010 Range.FormulaArray โดยใช้ Range.Replace
ฉันกำลังพยายามทำงานประจำวันโดยอัตโนมัติที่ฉันใช้สูตรอาร์เรย์ INDEX () + MATCH () เพื่อดึงข้อมูลบางอย่างจากสมุดงานที่แตกต่างกันเป็นสมุดงาน 'ต้นแบบ' หนึ่งเล่ม สิ่งนี้ทำงานได้ด้วยตนเอง แต่ตอนนี้ฉันต้องการทำให้กระบวนการนี้เป็นแบบอัตโนมัติ ฉันใช้ขีด จำกัด 255 ตัวอักษรของคุณสมบัติ Range.FormulaArray และพยายามที่จะหลีกเลี่ยงมันโดยใช้ลูกเล่นที่จัดเตรียมไว้ที่นี่แต่ไม่มีโชค เมื่อเรียกใช้รหัสนี้ส่วน p1 ของสูตรจะถูกแทรกลงในช่วง แต่จะไม่ถูกเรียกใช้งาน 2. แทนที่ ฉันลองใช้ชุดส่วน "What" ที่แตกต่างกันของฟังก์ชัน. แทนที่ทั้ง "X_X_X ()" และ "{0}" และอีกมากมายที่ไม่มีโชค Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim p1, p2, p3 As String p1 = "=IF(G2<>"""",INDEX('C:\path\to\[document.xlsx]Sheet1'!$P:$P,MATCH(1,({0})*({1}),0)),"""")" p2 …

0
ฉันจะตั้งค่า Microsoft Word เพื่อเปลี่ยนข้อความใด ๆ ที่ห่อหุ้มใน
ฉันต้องการที่จะสามารถพิมพ์ `simple code 'ในระหว่าง backticks ดังที่แสดงและให้ Word เปลี่ยนแบบอักษรเป็นแบบอัตโนมัติ monospace ตัวแปร ฉันตระหนักถึงทางเลือกอื่นเช่น LaTeX แต่ต้องการใช้ Word สำหรับสิ่งนี้ถ้าเป็นไปได้

2
คุณสามารถทำให้ Excel เปลี่ยนสีของเซลล์อื่นได้เมื่อคลิกเซลล์นี้หรือไม่
ฉันลอง Googeling แล้วแต่ไม่พบคำตอบ ... ผิดหวังมาก ฉันพยายามทำสิ่งนี้ใน Excel: เลือกเซลล์ B1 - B5 (หรือเพียง B1) เซลล์ที่เลือก A1 (ซึ่งมีสีเหลือง) Cells B1 - B5 (หรือเพียง B1 ถ้าเลือก B1 เท่านั้น) ก็จะกลายเป็นสีเหลือง นี่คือสเปรดชีตใบไม้ (วันหยุด) และมีสีต่างกันสำหรับจุดประสงค์ในการลาที่แตกต่างกัน (เช่นป่วยวันหยุดครึ่งวันเป็นต้น) ทุกครั้งที่มีคนไฮไลต์เซลล์ในปฏิทินสเปรดชีตพวกเขาสามารถคลิกที่สีที่สอดคล้องกันเพื่อสีเซลล์ที่เลือก ฉันพยายามจำลองพฤติกรรมเดียวกันนี้ สิ่งนี้ทำโดยใครบางคนสำหรับแผ่นงาน Excel ของสำนักงานของฉัน แต่ฉันไม่สามารถติดต่อบุคคลเดิมที่ทำ ฉันพยายามทำซ้ำฟังก์ชั่นนี้ในแผ่นงาน excel ใหม่ ฉันต้องทำอย่างไร? มาโคร? สคริปต์ VB หรือไม่

2
PowerPoint: การคงมุมการปัดเศษในขณะที่ปรับขนาดสี่เหลี่ยมมุมมนเหมือนใน Adobe Illustrator
ฉันกำลังใช้ PowerPoint เพื่อสร้างส่วนต่อประสานกับผู้ใช้ มันง่ายถ้าคุณใช้สี่เหลี่ยมมุมฉากแบบปกติ มันยากเมื่อคุณใช้สี่เหลี่ยมมุมฉาก มีวิธีการรักษามุมการปัดเศษของสี่เหลี่ยมมุมมนในขณะที่ปรับขนาดหรือไม่? ในปัจจุบันถ้าคุณปรับขนาดสี่เหลี่ยมมุมมนให้ใหญ่ขึ้นหรือเล็กลงอย่างเหมาะสม นี่คือสิ่งที่ฉันไม่ต้องการ ... ฉันต้องการที่จะปรับขนาดเพียงความกว้างและความสูงของสี่เหลี่ยมผืนผ้าโดยไม่ต้องเปลี่ยนรัศมีชายแดนโค้งมน เหมือนใน CSS หรือเหมือนใน Illustrator แต่ใน PowerPoint

1
การคัดลอกข้อมูลจากเอกสารคำหลายคำลงในแผ่นงาน excel เดียว
ฉันมีไฟล์ doc และ docx ประมาณ 4,000 ไฟล์ซึ่งมีตาราง ฉันจัดการเพื่อนำเข้าสิ่งเหล่านี้ลงในแผ่นงาน excel โดยใช้สคริปต์ต่อไปนี้: Sub Macro1() Dim xl As Object Set xl = CreateObject("excel.application") xl.workbooks.Add xl.Visible = True 'Here put your path where you have your documents to read: myPath = "C:\Users\" 'End with '\' myFile = Dir(myPath & "*.docx") xlRow = 1 Do …

2
ตัวตรวจสอบข้อมูล MS Excel ไม่ยอมรับการเรียกไปยังแมโครที่กำหนดเอง
ฉันมีมาโคร VB ที่ทำงานซึ่งตรวจสอบความถูกต้องของเนื้อหา ใช้พารามิเตอร์สตริงสองตัว (ค่าเซลล์และนิพจน์ทั่วไป) และส่งคืนค่าจริงหรือเท็จ มันใช้ CreateObject("VBscript.regexp") ภายใน ฉันต้องใช้แมโครนี้เพื่อตรวจสอบเซลล์ เมื่อฉันพยายามตั้งค่ามันเป็นเครื่องมือตรวจสอบที่กำหนดเองวิธี =Rex(E2, "\d{1,2}\:\d{2}") โดยที่ Rex เป็นฟังก์ชันของฉันที่กำหนดไว้ในกระดาษคำนวณเดียวกัน (Alt-F11 และประเภท) และ E2 เป็นเซลล์ที่ฉันพยายามตรวจสอบฉันได้รับข้อความ "ไม่พบช่วงที่ตั้งชื่อที่คุณระบุ" ถ้าฉันแทรกฟังก์ชั่นเดียวกันที่อื่นในสเปรดชีตเดียวกัน (พูดที่เซลล์มุมบน A1): =Rex(E2, "\d{1,2}\:\d{2}") มันแสดงให้ฉันเห็นอย่างชัดเจน TRUE ถ้าเซลล์ E2 แก้ไขค่าที่ถูกต้องเช่น 15:07 และ FALSE ถ้าไม่ชอบ 15xx - ครึ่งหนึ่งได้รับการแก้ไข แต่ยังไม่ถึงจุดสิ้นสุด ฉันต้องรวมเครื่องมือตรวจสอบความถูกต้องของฉันด้วยวิธีมาตรฐาน ฉันใช้ MS Excel 2010 แมโครตัวเองคือ Public Function Rex(ByVal vsStringIn …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.